尝试在Perl中解除一些变量的污染,以下代码效果很好:
在上述示例中,如果有效,则$1包含$year。然而,当使用
if ($year =~ /^(\d{4})$/) {
$year = $1;
} else {
&invalid("year");
}
在上述示例中,如果有效,则$1包含$year。然而,当使用
?:
运算符时,当有效时,$1包含“1”:($year =~ /^(\d{4})$/) ? $year = $1 : &invalid("year");
有人看到我可能在哪里出错了吗?我很困惑为什么会发生这种情况。这只发生在这台机器上。或者说,多年来我一直成功地使用?运算符返回正确的匹配变量。我还没有在其他机器上尝试过这段代码。
This is Perl, v5.8.8 built for x86_64-linux-thread-multi
c ? x=1 : x=2
意味着(c ? x=1 : x) = 2
)。但是,您提供的代码没有您所描述的问题或任何优先级问题。 - ikegami&
来调用子程序,例如&invalid(...)
;它不会按照你的期望执行...请使用invalid(...)
。 - pavel@_
数组在调用例程时保持不变... - pavel