Perlについての質問箱 32箱目
■ このスレッドは過去ログ倉庫に格納されています
0637デフォルトの名無しさん
2007/09/18(火) 15:38:31そして基本的にmapやgrepを使う時は$_を使うな。
簡単には見つけ出せないバグが発生しやすい。
下の二つは一見同じようなことをしているが、動作がまったく違う。
----------------------------------------------
■
@hoge = qw(1 2 3);
@foo = map {$_ + 1} @hoge;
print "@hoge @foo";
=> 1 2 3 2 3 4
■
@hoge = qw(1 2 3);
@foo = map {++$_} @hoge;
print "@hoge @foo";
=> 2 3 4 2 3 4
grepやmapをネストするとこんな問題が必ず発生する。
解決方法
+壊れてもいいリストを渡す。
+map {my $hage = $_ ; ++$hage }とかちゃんと壊れてもいいものに代入する。
あともっと基本的に$_->[0] とか何がなんだか分かっているのか。
半年後の630も、今の俺も読めねえ。
■ このスレッドは過去ログ倉庫に格納されています