Perl には,ハッシュのキーと値を対にしてとることのできる each というオペレータというか関数というかがあるのですが, my %h = ( 'a' => 1, 'b' => 2, ... ); foreach my $key (keys %h) { print $key, " => ", $h{$key}, "\n"; } # equivalent to: while (my ($key, $value) = each %h) { print $key, " => ", $value, "\n"; }この機能は,ハッシュに内在するイテレータを内部的に操作しています。すべてのハッシュの走査が終わるとイテレータはリセットされます(先頭に戻ります)。それでこのイテレータは keys, values などの関数でも使っています。ですから上記の each の下のブロックで keys や val

