#! perl -sw use strict; my ($a1,$b1); #open(DATA, "+< tmp/$tmp.dat") or die "file:$tmp $!"; my @lines = sort { do{ ($a1) = $a =~ m/^([^,]+?),/; $a1; } <=> do{ ($b1) = $b =~ m/^([^,]+?),/; $b1; } } grep{ !m/^\s*$/ } ; print @lines[0 .. (scalar @lines >= 10) ? 9 : $#lines]; __DATA__ -25,AAR ,1303.000,00,1328.000 0,ABO ,5.575,00,5.575 36,ABS ,1243.000,00,1207.000 0,ABY ,122.500,00,122.500 -0.1,ACBD ,3.050,00,3.150 -1.5,ACG ,70.000,00,71.500 -20,ACI ,2459.000,00,2479.000 0,ACID ,4.250,00,4.250 -8,ACO ,1869.000,00,1877.000 #### # Output C:\test>201177 -25,AAR ,1303.000,00,1328.000 -20,ACI ,2459.000,00,2479.000 -8,ACO ,1869.000,00,1877.000 -1.5,ACG ,70.000,00,71.500 -0.1,ACBD ,3.050,00,3.150 0,ABY ,122.500,00,122.500 0,ACID ,4.250,00,4.250 0,ABO ,5.575,00,5.575 36,ABS ,1243.000,00,1207.000 C:\test> #### #! perl -sw use strict; #open(DATA, "+< tmp/$tmp.dat") or die "file:$tmp $!"; my ($a1,$b1); print + (sort { do{ ($a1) = $a =~ m/^([^,]+?),/; $a1; } <=> do{ ($b1) = $b =~ m/^([^,]+?),/; $b1; } } grep{ !m/^\s*$/ } )[0 .. 8];