我正在用 Perl 构建一个压力系统来纠正学生的编程作业。我构建了一个check(<boolean>,<congrats-message>,<blame-message>)
应该在此过程中帮助我的函数。
当我调用它时
check(get_option('content-type') eq "text/html","good type", "bad type");
一切安好。但如果我敢做
check(get_option('content-type') =~ m:text/html:i, "good type", "bad type");
当正则表达式找不到匹配项时,它会中断。实际上它相当于一个check("good type", "bad type")
. 我在 check() 函数中只使用$_[0]
,$_[1]
等等,这不像我有 'undef' 作为第一个参数:我真的可以用die unless $#_ == 2
.
发生了什么 ?我解决了这个问题
check((get_option('content-type') =~ m:text/html:i && 1), "good type", "bad type");
但我很想了解这种奇怪情况的原因和原因。
--
sub check {
if ($_[0]) {
$okay++;
print STDERR "^_^ $_[1] ($okay)\n";
} else {
print STDERR ">_< $_[2]\n";
}
return $_[0];
}