my @order = qw(Sports Books Places); my %hash; # populate the hash's slice @hash{@order} = ( # we need a list # of three anonymous array ["Soccer","UltimateFrisbee","Basketball"], ["Cannery Row", "Animal Farm", "East of Eden"], ["BigSur","Zion", "CrateLake"] ); #retrieve them in the desired @order print map { "$_ => ".(join ',',@{$hash{$_}})."\n" } @order ;