Perl 为什么即使宏成功执行,die也会执行

Perl 为什么即使宏成功执行,die也会执行,perl,die,Perl,Die,我试图使用perl执行一个宏,如果代码是 $myObject->{DoCmd}->RunMacro(“删除”)或die“无法运行宏\n” 程序将成功执行,包括宏和骰子,并说明无法运行宏尽管执行成功,为什么骰子的行为异常?是否有其他方法检查宏是否执行?这里的问题是,$myObject->{DoCmd}->RunMacro(“Delete”)返回的内容在Perl中计算为false 运行此代码时 $myObject->{DoCmd}->RunMacro("Delete") or die "

我试图使用perl执行一个宏,如果代码是

$myObject->{DoCmd}->RunMacro(“删除”)或die“无法运行宏\n”


程序将成功执行,包括宏和骰子,并说明
无法运行宏
尽管执行成功,为什么骰子的行为异常?是否有其他方法检查宏是否执行?

这里的问题是,
$myObject->{DoCmd}->RunMacro(“Delete”)
返回的内容在Perl中计算为false

运行此代码时

$myObject->{DoCmd}->RunMacro("Delete") or die "Could not run macro\n";
Perl将首先运行
左侧的代码。如果计算结果为false,那么它将计算右侧的代码(这会导致程序死亡)

以下是perldoc关于Perl的一段话:

数字0、字符串“0”和“”、空列表()和未定义 在布尔上下文中都为false。所有其他值均为真。 对真值的否定!或not返回一个特殊的假值。 当作为字符串计算时,它被视为“”,但作为数字,它 被视为0。大多数返回true或false的Perl运算符的行为 这边走


$myObject->{DoCmd}->RunMacro(“Delete”)
返回什么?如果成功的话是
0
,那么我认为该程序将消亡是有意义的。(
0或die
)@Matt我试过
$a=$myObject->{DoCmd}->RunMacro(“删除”)
和打印的
$a
但是我得到一个空行(我的意思是没有值)@Programmer Perl会将一个空行视为false。如果0表示“OK”,其他表示错误,您可以将代码重写为:
$myObject->{DoCmd}->RunMacro(“Delete”)==0或die“无法运行宏”\n