通过系统调用从其他perl脚本获取结果

时间:2013-05-14 05:12:05

标签: perl

我知道我可以使用require并以不同的方式执行此操作,但我只是在玩perl并遇到了一些我不知道如何解释的事情。

这是我的第一个脚本:

use 5.16.2;
use warnings;

sub get
{
print "hello";
}

get();

测试脚本:

use 5.16.2;
use warnings;

my $val=system('perl test.pl');
print "$val\n";

#prints: hello0, I surmised that 0 is the return code for system

我抬头看看如何忽略0并得到了一些错误的东西,但是让我想到了这个:

print '', system('perl test.pl');

#also prints hello0

my $val='', system('perl test.pl');
print "$val\n";
#prints: hello

这有效,但我完全不知道为什么。我也很困惑为什么它前面的那个不起作用。有人可以解释一下吗?

1 个答案:

答案 0 :(得分:3)

此:

print '', system('perl test.pl');

使用两个参数调用print,即''(空字符串:无效)和system('perl test.pl')(评估为0,如您所见,前提是{ {1}}成功运行。)

使用更多括号更明确,您可以将上面的内容写成:

perl test.pl

或者你可以把它写成:

print('', system('perl test.pl'));

此:

my $val = system 'perl test.pl'; # prints 'hello', sets $val to zero
print '', $val; # prints zero

my $val='', system('perl test.pl'); 声明为局部变量并将其设置为$val(空字符串),并且(无关)调用''。使用括号显示:

system('perl test.pl')

或者:

(my $val = ''), system('perl test.pl');