perl – system()返回的值是否与“$?”相同?
发布时间:2020-12-15 21:12:26 所属栏目:大数据 来源:网络整理
导读:当我在Perl中执行system()调用时,我通常会根据 perldocs检查返回代码.大部分时间$rc!= 0对我来说已经足够了.最近我帮了两个人,在apache下运行.cgi脚本时遇到了系统()调用问题.我指示他们检查$rc my $rc = system(...); 并将它们链接到system()文档.然后我看
当我在Perl中执行system()调用时,我通常会根据
perldocs检查返回代码.大部分时间$rc!= 0对我来说已经足够了.最近我帮了两个人,在apache下运行.cgi脚本时遇到了系统()调用问题.我指示他们检查$rc
my $rc = system(...); 并将它们链接到system()文档.然后我看得更近了,注意到文档并不是真的在谈论$rc,而是关于$?我感到有点尴尬,出现了以下问题: 是否有区别: system(...); if ($? == -1) { print "failed to execute: $!n"; } elsif ($? & 127) { printf "child died with signal %d,%s coredumpn",($? & 127),($? & 128) ? 'with' : 'without'; } else { printf "child exited with value %dn",$? >> 8; } 和 my $rc = system(...); if ($rc == -1) { print "failed to execute: $!n"; } elsif ($rc & 127) { printf "child died with signal %d,($rc & 127),($rc & 128) ? 'with' : 'without'; } else { printf "child exited with value %dn",$rc >> 8; } 或者,简而言之,$rc等于$?对于system()? 我看过system,wait和$?的文档,但对我来说还不是很清楚.过去15年里我使用$rc做错了吗? 解决方法
是的,
system 的回报值应等于$?
但是从$?不仅适用于系统调用和$?是一个全局变量,它可能被其他动作所覆盖.从perldoc -v’$?’这些包括:
保存值立即比较更安全: my $rc = system('ls myfile.txt'); if ( $rc >> 8 != 0 ) { # do something because ls exited with an error } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |