Perl で分かったこと
および、分かってないこと。
- for と foreach は同じものなんだって
(バージョンで微妙に違うらしいけど)同じらしい。へぇへぇへぇへぇ...
- || と or は同じじゃないの?
open INHANDLE, "< a:\\abc.bin" || die "hoge";
open INHANDLE, "< a:\\abc.bin" or die "hoge";
だと、フロッピーディスクを抜いてあるときに挙動が違うがなぜだ?
前者(||)だとメッセージが出ない。後者(or)だとちゃんとメッセージが出る。
- ファイルハンドルって my を付けられないの?
ディレクトリを再帰的に検索するようなときに、どうすりゃいいんっだ?
sub myopen { my $file = $_[0]; opendir(DIR, $file); while (my $name = readdir(DIR)) { if ($name eq ".") { next; } if ($name eq "..") { next; } print $file . $name . "\n"; myopen($file . $name); } closedir(DIR); }
だとうまくいかない。おそらく変数 DIR が重複して使われてしまう。
sub myopen { my $file = $_[0]; opendir(my $DIR, $file); while (my $name = readdir($DIR)) { if ($name eq ".") { next; } if ($name eq "..") { next; } print $file . $name . "\n"; myopen($file . $name); } closedir($DIR); }
だとうまく動くが、でもファイルハンドルって $ 付けたらダメな慣習があるんだよね?って言うかなんで $ 付けても動くのに付けたらダメなの?