my @data = ( "7 modify ldfapg pub abc.h", "8 modify bfxml dtd/src newfiles.ksh", "9 delete bfxml dtd/src newfiles.ksh", "10 modify bfxml dtd/src newfiles.ksh" ); my @sorted = map { $_->[0] } sort { $a->[1][2] cmp $b->[1][2] or $a->[1][0] <=> $b->[1][0] } map { [ $_, [ split /\s+/, $_ ] ] } @data;