perlで配列でpushしてforeach
何年か後、なんじゃ、こんな恥ずかしいコードさらしていたのか、といえるくらいに上達する事を目指して日々頑張ってみる。
とりあえず、昨日の続き。特定のディレクトリ(下のソースだと、カレントディレクトリ)の一覧を取得して、拡張子がtxtのものだけ出力するもの。
splitで、.の前後を分割してみたが、何故か/\./だと上手くいくが、/./だと上手くいかなかった。何でかは不明だが、そのうち分かるだろう。
VB.NETに比べて、配列がかなり扱いやすい。VB.NET的配列+VB.NET的ArrayListのいいとこどりのイメージ。
my $dir = new DirHandle '.'; while(my $name = $dir->read) { my @splitedPart = split(/\./, $name); if ($splitedPart[-1] eq "txt") { push @namelist, $name; } } $dir->close; foreach my $out (@namelist) { print $out . "\n"; }
ちなみにとりあえずの目標は、特定のディレクトリの特定の拡張子のファイルを別の場所にコピーするというもの。再帰的にサブディレクトリをたどっていけるようにする。
それができると、大幅に楽できるポイントがあるので。教科書に習って作っていくのではなく、目的もって色々調べていきつつ学習するほうが好みなので。