使用Pipe的Perl命令输出

时间:2014-02-01 18:18:51

标签: perl

任何人都可以告诉我为什么除了正常的脚本输出之外什么都不打印?

open( PS, "python /home/me/someprogram.py --option1 A -d somedomain.com |" ) || die "Failed: $!\n";
while (<PS>) {
    my $line = $_;
    print "LINE = $line\n";
}

换句话说它永远不会打印出来:

LINE = ...

只是常规输出,就像我直接从命令行运行一样。

以下工作正常:

open( PS, "ps waux |" ) || die "Failed: $!\n";
while (<PS>) {
    my $line = $_;
    print "LINE = $line\n";
}

编辑(已解决)

这有效

open( PS, "python /home/me/someprogram.py --option1 A -d somedomain.com 2>&1 |" ) || die "Failed: $!\n";
while (<PS>) {
    my $line = $_;
    print "LINE = $line\n";
}

1 个答案:

答案 0 :(得分:0)

这个怎么样?

open( PS, '-|','python /home/me/someprogram.py --option1 A -d somedomain.com' )