Perl脚本 - 将所有输出传输到同一个终端(如何?)

时间:2012-12-02 14:09:50

标签: perl unix console stdout

我正在调用一系列Perl脚本,我希望所有stdout / stderr到达命令行。 我有两个脚本:

A.pl

print "Hello from A\n";
`perl B.pl`;
print "Back to A\n";

B.pl

print "Hello from B\n";

当我致电 perl A.pl 时,我得到:

Hello from A
Back to A

但我希望看到的是

Hello from A
Hello from B
Back to A

当然我可以更改A并明确打印B的输出,如下所示:

my $output = `perl B.pl`;
print $output;

但由于我的脚本非常复杂,我想避免它。有没有一种通用的方式来说明所有内容都打印到同一个终端?

2 个答案:

答案 0 :(得分:5)

如果您使用系统而不是反引号,则输出将转到终端。反引号专门用于捕获其他进程的输出:

print "Hello from A\n";
system('perl B.pl');
print "Back to A\n";

答案 1 :(得分:3)

是的,如果您不想捕获输出,请停止使用反引号!

简单地做system $^X, "B.pl";有什么问题?