我试图使用perl执行一个宏,如果代码是
,我遇到了以下问题 $myObject->{DoCmd}->RunMacro("Delete") or die "Could not run macro\n";
该程序将成功执行,包括宏和死亡说Could not run macro
为什么虽然执行成功,但是行为很奇怪?是否还有其他方法可以检查宏是否已执行?
答案 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运算符都表现出来 这样。