use List::Util qw[ shuffle ];; %h1 = map{ ("key$_", "value$_" ) } 0 .. 9;; @selected = (shuffle keys %h1 )[ 0 .. 4 ];; @h2{ @selected } = @h1{ @selected };; printf "%-20s %-20s\n", $h1{ $_ }, $h2{ $_ } // '' for sort keys %h1;; value0 value0 value1 value1 value2 value2 value3 value4 value4 value5 value6 value6 value7 value8 value9