#!/usr/bin/perl use strict; use warnings; my @x = map {$_->[0]} sort {$b->[2] <=> $a->[2] || $a->[1] <=> $b->[1] } map {[$_, split]} grep {/\S/} ; for my $i (0 .. $#x) { print $x[$i]; print "\n" if ($i + 1) % 3 == 0; } __DATA__ 1.000 64.103 2840.0 1.000 42.735 2840.0 1.000 32.051 2840.0 1.050 64.103 3280.0 1.050 42.735 3280.0 1.050 32.051 3280.0 1.100 64.103 3720.0 1.100 42.735 3720.0 1.100 32.051 3720.0