my $sort = sub { my $rhash = shift; return sort { $rhash->{$a}{'field3'} cmp $rhash->{$b}{'field3'} } keys %{$rhash} }; $hash_out = show_these($hash_ref,[ 'field1','field2','field3' ],$sort);