my %browsers = (); foreach ($line) { # eg '12|netscape' $browsers{(split(/|/))[1]} = (split(/|/))[0]; } print sort { $browsers{$a} <=> $browsers{$b} } keys %browsers;