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"; }