#! perl use strict; use warnings; my (@keys, @vals); while () { my ($key, $val) = /^(.*?\S)(\s.*)$/s; push @keys, $key; push @vals, $val; } @vals = sort { mysort() } @vals; while (@keys) { my $key = shift @keys; my $val = shift @vals; print $key, $val; } sub mysort { my ($aa) = $a =~ /^\s*(\d+)/; my ($bb) = $b =~ /^\s*(\d+)/; return $aa <=> $bb; } __DATA__ 1014 1 10 1015 51 100 1016 11 50 1017 101 -