use List::Util qw(shuffle); ... foreach my $k (shuffle keys %foo) { ... } #### %hash = ( "a" => 1, "b" => 2, "c" => 3, "d" => 4 }; #### %hash = ( "c" => 1, "d" => 2, "a" => 3, "b" => 4 };