有没有办法将子例程的打印输出捕获到变量,以便我可以将其发送到 stderr?

2023-11-23

假设我们有:

sub test {
        print "testing\n";
}

如果我想将其打印到 stderr 而不是 stdout,有没有办法可以调用子例程来执行此操作?或者我可以将输出捕获到变量然后使用警告吗?我对 Perl 还很陌生。


就在这里。print将其输出发送到“选定的”文件句柄,通常是STDOUT。但 Perl 提供了select功能供您更改。

select(STDERR);
&test;           # send output to STDERR
select(STDOUT);  # restore default output handle

The select函数返回先前选择的文件句柄,因此您可以捕获它并在以后恢复它。

my $orig_select = select(STDERR);
&test;
select($orig_select);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法将子例程的打印输出捕获到变量,以便我可以将其发送到 stderr? 的相关文章

  • WWW::Mechanize::Firefox - 如何打开多个选项卡

    我想打开两个单独的选项卡并在 Firefox 中保持打开状态 我在用WWW Mechanize Firefox 请找到下面的代码 usr bin perl w use strict use WWW Mechanize Firefox my
  • 我的 Perl 脚本中的 findnodes 语句有什么问题?

    我有一个简单的 xml 文件 如下所示
  • 如何设置 $!在 Perl 中

    我想在 perl 中编写一些设置 的函数 与内置 perl 函数类似 当我尝试执行此操作时 它抱怨 参数 无法创建管理员用户 在标量分配中不是数字 我试过用谷歌搜索这个 但不幸的是谷歌不会在 所以结果很难得到 if createUser a
  • 多重处理:如何从子进程重定向标准输出?

    注意 我见过multiprocessing Process 的日志输出 https stackoverflow com questions 1501651 log output of multiprocessing process 不幸的是
  • 使用 Perl 计算字符串中的连续字符数

    我有一个包含多个连续字符序列的字符串 例如 aaabbcccdddd 我想将其表示为 a3b2c3d4 到目前为止 我已经想出了这个 usr bin perl str aaabbcccdddd str s 1 1 g print str n
  • 使用 Perl 分割大文本文件

    我必须将一个 1 8Tb 的大文本文件分成两部分 我只需要文件的后半部分 该文件有 n作为记录分隔符 I tried perl ne print if gt line to start from test txt gt result txt
  • Term::ReadLine - 我需要点击向上箭头两次才能检索历史记录

    我正在使用 Term ReadLine 并遇到一个奇怪的问题 我需要点击向上箭头两次才能从 addhistory 中检索项目 这是我正在使用的脚本 use Term ReadLine my term Term ReadLine gt new
  • Perl 单元测试只针对模块,而不针对程序吗?

    我在网上找到的文档和我拥有的书 Perl测试 或者说或者建议 Perl 的单元测试通常是在创建模块时完成的 这是真的 有没有办法使用单元测试实际程序Test More和表兄弟姐妹 当然 您可以使用测试脚本测试 更多 http search
  • 如何在 perl 程序中查找打开的全局文件句柄

    我刚刚发现一个问题 我必须关闭所有打开的文件句柄才能让我的 Apache cgi 脚本继续 我将问题追溯到 Parse RecDescent usr bin env perl use strict use warnings use feat
  • 无法安装 WWW::Curl::Easy: SZBALINT/WWW-Curl-4.17.tar.gz : make NO

    我正在尝试在我的 Fedora 26 机器上安装 WWW Curl Easy gcc c I usr include D REENTRANT D GNU SOURCE O2 g pipe Wall Werror format securit
  • 找不到 DBI.pm

    我正在尝试启动这个脚本 usr bin perl use DBI my dbh DBI gt connect dbi Oracle host lonlin2 sid TIMFX1AD port 1524 xbsesdbo xbsesdbo1
  • OpenSSL DH 密钥太小错误

    我正在尝试使用简单的 PERL 脚本连接到封闭的服务器 空调 usr bin perl use 5 10 1 use warnings use strict use IO Socket SSL use IO Socket SSL qw de
  • 如何对 Data::Dumper 的输出进行排序?

    我想转储对象和散列的值 但它总是乱序打印键 如何按 递归 排序顺序转储键 use Data Dumper print Dumper obj Set Data Dumper Sortkeys 1获取 Perl 的默认排序顺序 如果要自定义顺序
  • Perl Parallel::Forkmanager 不允许收集变量值

    也许因为子进程不知道我的散列 请参阅下面的代码 散列 输出没有收集任何内容 除了写入 tmp 文件之外 还有其他方法来收集该值吗 foreach Item AllItems pid pm gt start Item and next Tem
  • 在 Perl 中使用数据引用的正确方法

    我有一组想要处理的数据 为了简化我的代码 最好通过指向原始数据的引用数组来访问我的数据的某些子集 比解释更好的是 我写下了这个例子 它还没有工作 最后 我想更新原始数据 而不必更新所有子集 用 Perl 可以做这样的事情吗 usr bin
  • Python `print` 将额外文本传递给 sys.stdout?

    这可能是我错过的一些愚蠢的事情 但它确实让我挂在了一个更大的项目上 c扩展 我正在写的 Why is print Hello World 通过None和一个额外的 n to sys stdout here gt gt gt import s
  • 在 Windows 7 中使用 ActivePerl @ARGV 为空

    我有以下 Perl 脚本 我正在尝试使用 ActivePerl 在 Windows 7 中运行它 c Perl64 bin perl exe w use strict my mp3splt exe c Program Files x86 m
  • 从 php 执行 bash 脚本并立即输出回网页

    我有一组 bash 和 Perl 脚本 开发在 Linux Box 上部署所需的目录结构 可选 从svn导出代码 从这个源构建一个包 这在终端上运行良好 现在 我的客户请求此流程的 Web 界面 例如 某些页面上的 创建新包 按钮将一一调用
  • Perl LWP GET 或 POST 到 SNI SSL URL

    我有一个使用 perl LWP 向客户发送数据的系统 他们可以选择 URL 以及是 POST 还是 GET 一位新客户最近抱怨该服务不起作用 他们怀疑这是因为他们的端点使用了 SNI SSL 查看日志 我看到的只是错误消息 证书验证失败 5
  • Perl:正则表达式不抓取代码中的多行 C 风格注释

    我有一个 Perl 程序 读取用 C 编写的 SRC 文件 使用 SRC 文件中的正则表达式匹配来查找特定格式的数据以用作目标文件名 打开新的目标文件 执行另一个正则表达式匹配以查找包含关键字 abcd 的所有 C 风格注释 注意 这些注释

随机推荐

  • Gunicorn 使用 docker-compose 优雅地停止

    我发现当我使用 docker compose 关闭我的gunicorn 19 7 1 python应用程序 总是需要10s才能关闭 这是 docker compose 在强制终止进程之前等待的默认最大时间 根据 t timeout范围 我认
  • 适用于 Windows 的 Grep

    Old txt包含 apple orange banana And New txt包含 apple orange banana grape lemon 我可以访问添加到的新内容New txt using grep命令 grep Fxvf O
  • Python 中可以重载 from/import 吗?

    Python 中是否可以重载 from import 语句 例如 假设jvm object是类的一个实例JVM 是否可以编写这样的代码 class JVM object def import func self cls return som
  • javascript中self和this的区别以及何时使用它们[重复]

    这个问题在这里已经有答案了 可能的重复 JavaScript 习语 var self this 的基础是什么 我很困惑何时在 javascript 中使用 self 和 this 我知道this指的是当前上下文并且self指当前窗口 当我正
  • 反序列化为双精度时,JsonConvert 抛出“不是有效整数”异常

    当我尝试从 JSON 字符串反序列化为对象时 出现异常 Input string 46 605 is not a valid integer Path LatitudeCenter 这真的很奇怪 因为JsonConvert尝试反序列化一个整
  • 使用push命令在Z3中增量求解

    我正在使用 Z3 的 python api 进行某种增量求解 我迭代地向求解器推送约束 同时使用以下命令检查每个步骤的不满足性solver push 命令 我想了解 Z3 是否会使用从先前约束中学习到的引理 或者使用新添加的约束进行求解时先
  • 禁用 Eclipse Remote Systems Explorer 的 Sonarlint 自动扫描

    如何在 Eclipse 中禁用远程系统资源管理器插件的 SonarLint 自动扫描 背景 我最近为 Eclipse 安装了 SonarLint 插件 因为我工作的一个客户使用 Sonar 来提高代码质量 并且喜欢直接报告错误和代码异味 现
  • Javascript 表单验证和密码确认

    我正在尝试编写一个注册页面 但我遇到了最困难的时期
  • 从 ASP.NET Web API 中删除 XML 中的命名空间

    如何使用 Web API 从下面的 xml 响应中删除命名空间
  • 名称不能以“1”字符开头,十六进制值 0x31。 2 号线,2 号位置

    在 C 应用程序中加载 XML 文件时 我得到 名称不能以 1 字符开头 十六进制值 0x31 2 号线 2 号位置 XML 标签是这样开始的
  • /tmp/tomcat-docbase 始终使用 Spring Boot JAR 创建(但不是 WAR)

    我正在从 STS 创建一个标准 Spring Boot 1 5 2 Web 项目 如果运行此应用程序 您会创建两个目录 普通的 base 目录和 tomcat docbase 目录 4096 Mar 29 10 00 tomcat 2743
  • JSON输出重音问题

    我已经搜索了大约 3 个小时 我知道有很多像这样的问题已经被问过 但在尝试输出重音字符时 我还没有找到任何适合我的问题的解决方案我的数据库上的 SELECT 查询的结果 itemsList array while row mysql fet
  • 修改图像元数据

    我正在尝试修改 JPEG 图像中包含的元数据 它可以是图像中的任何元数据 在我的示例中 我尝试更改为DateTimeDigitized财产到当前日期 我的代码似乎大部分工作 但是设置的属性被删除而不是更改 我不确定为什么会发生这种情况 谁能
  • 如何通过PHP删除文件?

    如果文件位于另一个目录中 如何使用 PHP 从服务器中删除该文件 这是我的页面布局 projects backend removeProjectData php 此文件删除了我在数据库中的所有条目 并且还应该删除相关文件 public fi
  • pandas astype 类别不起作用

    我厌倦了将列更改为catgeory使用来自的文档http pandas pydata org pandas docs stable categorical html df pd DataFrame A 1 2 3 4 5 B a b c d
  • 为什么这条 Scala 行返回一个 Unit?

    下面是一段 Scala 代码 用于对 1 到 9 之间可被 3 或 5 整除的值求和 为什么第 5 行返回 Unit 而不是 Boolean 类型 object Sample def main args Array String val a
  • Web Worker 内部的 DOM 操作

    我知道工人can t直接操作文档 但是 DOM API 方法怎么样 他们去哪儿了 例如 如果我发出一个接收 HTML 片段的请求 如果只需要解析它以便从特定节点检索一些数据 我应该做什么 绝对有no way在 Web Worker 上使用虚
  • 请求:如何禁用/绕过代理

    我收到一个网址 r requests get http myserver com 正如我在 myserver com 的 access log 中看到的 使用了客户端的系统代理 但我想完全禁用代理requests 我目前知道禁用代理的唯一方
  • 如何在android中获取当前位置的邮政编码或区号?

    我想获取我的应用程序的 Android 设备中当前位置的邮政编码 以及找到它的任何示例或片段 我尝试过地理编码器 它仅提供纬度和经度位置 那你显然没有使用它 Geocoder geocoder new Geocoder this Local
  • 有没有办法将子例程的打印输出捕获到变量,以便我可以将其发送到 stderr?

    假设我们有 sub test print testing n 如果我想将其打印到 stderr 而不是 stdout 有没有办法可以调用子例程来执行此操作 或者我可以将输出捕获到变量然后使用警告吗 我对 Perl 还很陌生 就在这里 pri