グロブ
シェルの * の展開と同じことが perl でも出来る。カレントディレクトリのグロブを展開すると以下のような感じ。(join で結合してるだけで、glob 自体は、単なるファイル名のリストを返す)
% perl -e "warn join ',', glob '*';" a,b,c,d,do.pl,e at -e line 1.
何て簡単。これは、
my @files = <*>;
と書くのと同じことらしい。
perl5.6 まではこれは内部で csh を呼んでいたそうだ。なので、大量のファイルが存在するディレクトリでこれを使うと、実行に時間がかかったり、止まっちゃったりしたらしい。今はそんなこと無いと「初めてのPerl」に書いてるが、根拠はよくわからないので、パフォーマンスを確認してから使った方がよさそうだ。
my $num = unlink glob "*.bak"; # *.bak のファイルをすべて削除 warn "delete $num files."
なんてことも出来るんだ。