当我在perl

时间:2015-04-28 08:46:41

标签: perl pipe

我使用管道运行脚本

my $pid = open (OUTPUT, "$my_script") || "";
if (! $pid) {
  die("error");
}
while (<OUTPUT>) {
  print;
}
close (OUTPUT);
my $exit_status = $?>>8;
print "$exit_status";

有时我获得长退出状态:72057594037927935

这是什么意思?什么可能导致这种情况?

1 个答案:

答案 0 :(得分:1)

你得到一个很长的数字,因为$?的值是-1。右移8位会产生大量数据。试试这个:

print -1>>8;

$?-1,因为close()函数由于某种原因失败,而不是因为脚本以退出状态-1退出。

close()成功并且脚本以-1退出时,$?的值不会是-1,但值$?>>8将是255如此处所述:Why is the exit code 255 instead of -1 in Perl?