use strict; use warnings; my @lines = ; @lines = map {[/(\d+\.\d+)/g]} @lines; @lines = sort {$a->[1] <=> $b->[1] or $a->[0] <=> $b->[0]} @lines; print "@$_\n" for @lines; __DATA__ 48.1 0.4 99.0 0.5 1.0 0.2 99.0 0.3 1.0 0.1 99.0 0.2 1.0 0.3 99.0 0.4 1.0 0.5 99.0 0.6 13.1 0.6 99.0 0.7 5.0 0.4 48.0 0.5 1.0 0.6 13.0 0.7