« 緊急対応・・・が、しかしっ | メイン | 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等では大丈夫かもしれない。

twitterこの記事をTwitterでみんなに教える。

投稿者 debizoh : 2005年11月 6日 13:34



トラックバック

現在、この記事はトラックバックを受け付けておりません。


コメント

現在、この記事はコメントを受け付けておりません。