2

このコードでは、メソッドがパラメーターを 1 つしか取りませんが、shift が 2 回使用されています。

sub regexVerify ($)
{
   my $re = shift;

   return sub
   {
      local $_ = shift;
      m/$re/ ? $_ : undef;
   };
}

shift が再び使用されると、ローカルの $_ の値はどうなりますか? 私は (おそらく素朴に) 無に移行すると undef になると想定していました。しかし、それが本当なら、この行は意味がありませんよね?:

m/$re/ ? $_ : undef;

上記のサブは次のように呼び出されます。

regexVerify (qr/^([a-z].*)?$/i);
4

2 に答える 2