在这段代码中,shift 被使用了两次,尽管该方法只接受一个参数:
sub regexVerify ($)
{
my $re = shift;
return sub
{
local $_ = shift;
m/$re/ ? $_ : undef;
};
}
一旦再次使用 shift,这会使本地 $_ 的值是什么?我(也许天真地)假设转变为虚无会导致undef。但如果这是真的,这条线就没有意义了,对吧?:
m/$re/ ? $_ : undef;
上面的子被称为:
regexVerify (qr/^([a-z].*)?$/i);