揮発性のメモ2

http://d.hatena.ne.jp/iww/

eachのリセット

while( my ($k,$v) = each %hoge ){
    print "$k:$v\n";
}

最後までループが回る分には何も問題は無い。
途中で止めると内部イテレータがリセットされないので、次に同じことをすると続きからになってしまう。
イテレータをリセットさすには keys %hoge; 等で空回りさせる。

参考:

#!/usr/bin/perl

%hoge = ('ido',36, 'keido',140, 'shindo', 4);

while( my ($k,$v) = each %hoge ){
    print "$k:$v\n";
    last;
}

keys %hoge;
while( my ($k,$v) = each %hoge ){
    print "$k:$v\n";
}