我最近遇到了以下代码之一的perl模块
my @cat = qw( cat );
use IPC::Run qw( run timeout );
eval { run \@cmd, '<', "in.txt", \&out, \&err or die "cat: $?" };
#here why status variable is being done Binary Shift Right
my $status = $? >> 8;
我无法理解二进制转换的原因。
答案 0 :(得分:1)
我无法理解二元转换的原因。
因为如果不这样做,就无法获得所需的信息。
$?
包含三条信息:
$? & 0x7F
)($? >> 7) & 1
)exit
($? > 8
)答案 1 :(得分:0)
允许返回代码的“嵌套”。
因此,您可以区分生成错误代码的cat
和生成错误代码的run
(或您正在进行的任何perl调用)之间的区别。