my %hash = (); for (<>) { if (/^From: .* <(.*)>/) { $hash{$1}++; print $1, "\n"; } } foreach (sort {$hash{$a} <=> $hash{$b}} keys %hash) { print "key: $_; value: $hash{$_}\n"; }