あんにんにっき。

日々思ったことや、おこったことを記録するブログ。要するに日記。

perlで配列でpushしてforeach

 何年か後、なんじゃ、こんな恥ずかしいコードさらしていたのか、といえるくらいに上達する事を目指して日々頑張ってみる。
 とりあえず、昨日の続き。特定のディレクトリ(下のソースだと、カレントディレクトリ)の一覧を取得して、拡張子がtxtのものだけ出力するもの。
 splitで、.の前後を分割してみたが、何故か/\./だと上手くいくが、/./だと上手くいかなかった。何でかは不明だが、そのうち分かるだろう。
 VB.NETに比べて、配列がかなり扱いやすい。VB.NET的配列+VB.NETArrayListのいいとこどりのイメージ。

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";
}

 ちなみにとりあえずの目標は、特定のディレクトリの特定の拡張子のファイルを別の場所にコピーするというもの。再帰的にサブディレクトリをたどっていけるようにする。
 それができると、大幅に楽できるポイントがあるので。教科書に習って作っていくのではなく、目的もって色々調べていきつつ学習するほうが好みなので。