while ( ) { my @wanted = ( split )[ 0, 5, 9 ]; $wanted[1] =~ s/\D//g; $wanted[2] = sprintf "%05s",$wanted[2]; push @parsed, \@wanted; } print "@$_\n" for sort { $a->[2] cmp $b->[2] } @parsed;