即使宏成功执行,为什么执行死亡

时间:2014-03-28 04:13:29

标签: perl die

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

,我遇到了以下问题

$myObject->{DoCmd}->RunMacro("Delete") or die "Could not run macro\n";

该程序将成功执行,包括宏和死亡说Could not run macro为什么虽然执行成功,但是行为很奇怪?是否还有其他方法可以检查宏是否已执行?

1 个答案:

答案 0 :(得分:2)

这里的问题是$myObject->{DoCmd}->RunMacro("Delete")返回的内容在Perl中的结果为false。

运行此代码时,

$myObject->{DoCmd}->RunMacro("Delete") or die "Could not run macro\n";

Perl将首先运行or左侧的代码。如果它的计算结果为false,那么它将评估右侧的代码(这会使程序死亡)。

以下是Perl中关于falsehood的perldoc的引用:

  

数字0,字符串'0'和“”,空列表()和undef   在布尔上下文中都是false。所有其他值都是真的。   否定真正的价值!或不返回特殊的假值。   当评估为字符串时,它被视为“”,但作为数字,它被视为   被视为0.大多数返回true或false的Perl运算符都表现出来   这样。