このコードは、パスのセット内の一意のベース名スタブのハッシュキーを使用してセットをコンパイルします。
%stubs = map { $f=basename $_; $f =~ /^([A-Za-z]+[0-9]+)\./ ; $1=>() } @pathlist;
$f
ここで参照が必要なのはなぜですか?私は大丈夫だと思った:
%stubs = map { basename; /^([A-Za-z]+[0-9]+)\./; $1=>() } @pathlist;
しかし、私は一致しません。マップブロックの$_を変更することは許可されていませんか?
コードが何をしているのか疑問に思っている人のために:
$ path(@pathlist)ごとに、ベース名を取得し、最初の文字と数字のシーケンスに一致してから、空のリスト値のキーとして最初の角かっこ一致を返します。例:
/some/dir/foo123.adfjijoijb
/some/dir/foo123.oibhobihe
/some/dir/bar789.popjpoj
戻り値
foo123 => ()
bar789 => ()
その後、マップのキーを値のセットとして使用するので、処理します。