« 緊急対応・・・が、しかしっ | メイン | DVカメラ届く »
2005年11月 6日
ハッシュ配列操作の注意 >>Perl
あるハッシュ配列から、一部の値だけを取得したいような場合、 keysを使うか、eachを使うかで動作が少々変わる。
while( ($key,$value) = each %hash) { if ($keys eq 'nantoka') { #処理 last; } }
このような場合、1度きり、この%hashが評価されるのならばよいが、2度目には反復子(iterator :繰り返しの位置を記憶している内部的なインデックス)が記憶されたままで、ハッシュ配列の格納数が1つ減ったりする。
反復子をリセットするにはkeysを使う。もしくは、そのように何度もループで使いまわされるハッシュ配列であるならば、上記のルーチンのようにeachでループ中にlastで抜けないこと。
ActivePerl 5.8.7 Windowsで行った場合にはそうなった。他のPlathome等では大丈夫かもしれない。
トラックバック
現在、この記事はトラックバックを受け付けておりません。
コメント
現在、この記事はコメントを受け付けておりません。