perl小技

これもよく忘れる.

  • directoryから特定のファイル(csv)だけ取り出して@filesに格納したい.
my $filedir = "directory";
opendir(DIR, $filedir) or die "can't find $filedir\n";
my @files = grep{/*\.csv/} readdir(DIR);

やってることは簡単で,readdir(DIR)は,ディレクトリハンドルDIRのファイルを配列で返してくる.grepは配列を受けてひとつずつ処理する.このとき,grepの引数に実は$_がはいっているのでやってることは$_ =~ /*\.csv/というパタンマッチ.ということで,うまく,目的のファイルであるcsvだけを取り出すことができる.