my %hash = ( arr1 => [1, 2, 3, 'a'], arr2 => [2, 3, 4, 'x'], arr3 => [3, 4, 5, 'e'], arr4 => [4, 5, 6, 'b'] ); my @sorted_hash_keys = sort { $hash{$a}->[3] cmp $hash{$b}->[3] } keys %hash; foreach my $key (@sorted_hash_keys) { print "\$hash{$key} = [@{$hash{$key}}]\n"; } #### $hash{arr1} = [1 2 3 a] $hash{arr4} = [4 5 6 b] $hash{arr3} = [3 4 5 e] $hash{arr2} = [2 3 4 x]