1

我正在调用一系列 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;

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

4

2 回答 2

5

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

print "Hello from A\n";
system('perl B.pl');
print "Back to A\n";
于 2012-12-02T14:13:05.003 回答
3

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

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

于 2012-12-02T14:12:18.790 回答