perl – 有没有办法将子程序的打印输出捕获到变量,所以我可以将它发送到stderr?

假设我们有:
sub test {
        print "testing\n";
}

如果有一种情况我想让它打印到stderr而不是stdout,有没有办法我可以调用子程序来做这个?或者我可以将输出捕获到变量然后使用警告?我对perl很新.

解决方法

在这里. print将其输出发送到“selected”文件句柄,通常是STDOUT.但是Perl提供了 select功能供您更改.
select(STDERR);
&test;           # send output to STDERR
select(STDOUT);  # restore default output handle

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

my $orig_select = select(STDERR);
&test;
select($orig_select);

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...