Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 命令输出被定向到屏幕_Perl - Fatal编程技术网

Perl 命令输出被定向到屏幕

Perl 命令输出被定向到屏幕,perl,Perl,新手Perl程序员在这里!。 我使用system()函数获取外部程序的返回代码(在本例中为-php),但是,命令的输出仍然打印到屏幕上。 我如何防止它这样做? 我的代码是: use strict; use warnings; print 'Return code:', system('php -l wrong.php'), "\n"; 此代码会打印返回代码,但也会打印执行的命令的输出 任何帮助都将不胜感激 EDIT:进一步的测试表明,仅使用php lint命令时会发生这种情况。。将它与其他命令

新手Perl程序员在这里!。 我使用system()函数获取外部程序的返回代码(在本例中为-php),但是,命令的输出仍然打印到屏幕上。
我如何防止它这样做? 我的代码是:

use strict; use warnings;
print 'Return code:', system('php -l wrong.php'), "\n";
此代码会打印返回代码,但也会打印执行的命令的输出

任何帮助都将不胜感激


EDIT:进一步的测试表明,仅使用php lint命令时会发生这种情况。。将它与其他命令一起使用不会打印任何内容…

如果您使用的是类似UNIX的操作系统,您应该能够重定向命令中的输出:

尝试:
system('php-l error.php>/dev/null')
来清除发送到stdout的内容

您还可以直接处理输出,这应该更便于携带。

您需要的是:

将stdin分为
$wtr
,将stdout分为
$rdr
,将stderr分为
$err

这也使您能够最大限度地控制与进程的通信

它应该进入一个小的实用程序脚本,所有这些代码都是必需的吗?GZaidman:我怀疑这个答案是因为你说了你不想要的东西(输出到屏幕上),但没有说你想要的东西(输出被扔掉),导致猜测你想要捕获输出。关于shell重定向的想法是正确的,但语法是错误的(php写到STDERR和STDOUT)。该命令应该是:
php-l error.php>/dev/null 2>&1
    use IPC::Open3;
    use Symbol qw(gensym);

    my $err = gensym; #work around IPC::Open3's interface
    my $pid = open3 my $wtr, my $rdr, $err,
            'some cmd', 'arg1', 'arg2', ...;