【发布时间】:2021-10-07 12:33:50
【问题描述】:
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 中做任何修改
如何实现?
提前致谢。
【问题讨论】:
-
很难不修改
inter.pl。错误在子进程(运行cat …的进程),错误代码在子进程完成后在$?中可用,然后脚本继续执行,包括最后一条exit 0指令。因此,无论ckfile.txt是否存在,ext.pl总是会看到inter.pl的“干净”运行。 -
如果你不能修改 inter.pl,你应该在关于这个话题的第一个问题中提到。
标签: perl system backticks exitstatus