【问题标题】:Perl scripting - pipe all outputs to the same terminal (how?)Perl 脚本 - 将所有输出通过管道传输到同一个终端(如何?)
【发布时间】:2012-12-02 14:09:49
【问题描述】:

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

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

【问题讨论】:

    标签: perl unix console stdout


    【解决方案1】:

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

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

    【讨论】:

    • 简单直接,我知道我缺少一些基本的东西!谢谢
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-08
      • 2017-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多