use warnings; use strict; use Data::Dumper; my @lines; chomp(@lines = ); my @sortedlines = map { $_->[0] } sort { $a->[1] <=> $b->[1] } map { [ $_, (split /;/)[0] ] } @lines; print Dumper(\@sortedlines); __DATA__ .0000000001;2;1;.5;.2 .5;2;1;.5;.5 0.3;1.5;.5;.5;.2 1;1;.7;1;1 .4;1;.4;1;.5