each, keys, values

eachはリストコンテキストではkeyとvalueのセットを1つずつ取り出す。スカラーコンテキストではkeyのみ。
keysはすべてのkeyのリストを、valuesはすべてのvalueのリストを返す。

use strict;
my %hash = ('key1' => 1,
            'key2' => 2,
            'key3' => 3);
while ((my ($key, $val)) = each(%hash)) {
    print "value of $key is $val\n";
}
print scalar(keys %hash), "\n";