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