0

inter.pl 的代码是:

use strict;
use warnings;

my $var1=`cat /gra/def/ment/ckfile.txt`;  #ckfile.txt doesn't exist
print "Hello World";
exit 0;

ext.pl 的代码

my $rc = system ("perl inter.pl");
print "$rc is rc\n";

在这里,当我运行“perl ext.pl”时,$rc 将变为 0。

尽管 inter.pl (/gra/def/ment/ckfile.txt) 中的文件不存在,但我得到的 $rc 为 0。

在同样的场景中,我希望 $rc 为 != 0 (在一种方式中,它应该是一个错误,因为文件 ckfile.txt 不存在)。

注意: 我不能在 inter.pl 中做任何修改

如何实施?

提前致谢。

4

1 回答 1

5

如果您希望程序具有非零退出状态,则需要替换 (useless) exit 0;

my $var1=`cat /gra/def/ment/ckfile.txt`;
exit 1 if $?;

或者

my $var1=`cat /gra/def/ment/ckfile.txt`;
die("Can't spawn child: $!\n") if $? == -1;
die("Child killed by signal ".( $? & 0x7F )."\n") if $? & 0x7F;
die("Child exited with error ".( $? >> 8 )."\n") if $? >> 8;
于 2021-10-07T14:22:45.803 回答