系统调用
如果你已经知道下面说的这些和Perl无关的事实,那抱歉我还是要多说几句。每当一个进程在Windows或Linux系统(以及其他大部分的系统)中结束,它将产生一个16位的状态字,高8位表示返回码,值落在0到255之间,其中0约定俗成地表示无条件的成功,而其他值则表示不同程度的失败,另外8位则少有人关心,它们“表示了错误的原因,比如因为收到了信号或者产生core dump信息”。
你可以调用[exit](http://perldoc.perl.org/functions/exit.html)
,用你选择的返回码(0到255之间)退出Perl脚本。
Perl提供了不止一种方法通过一句调用语句来启动一个子进程、等待子进程执行结束、然后继续解释执行当前的脚本。无论用那种方法,你会发现紧接着,子进程结束时返回的状态字已经被填入了内置scalar变量$?
中。你可以通过取出16位中的高8位来得到返回码:$? >> 8
。
我们可以用[system](http://perldoc.perl.org/functions/system.html)
函数调用另一个程序,并且提供一个参数列表,system
的返回值与填入$?
的值一致:
my $rc = system "perl", "anotherscript.pl", "foo", "bar", "baz";
$rc >>= 8;
print $rc; # "37"
另一种选择,我们也可以用反引号``
在命令行中运行一条真正的命令,并且捕获它的标准输出。在scalar上下文中,整个输出被当做一整个字符串返回返回,而在列表上下文中,整个输出按一个字符串的array返回,其中每个字符串是输出中的一行。
my $text = `perl anotherscript.pl foo bar baz`;
print $text; # "foobarbaz"
如果anotherscript.pl
包含形如下面这样的代码,你就能看到上面这种结果:
use strict;
use warnings;
print @ARGV;
exit 37;
当前内容版权归 胡瀚森(Sam Hu)译 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 胡瀚森(Sam Hu)译 .