for (sort third_field ) { print "Record: $_"; } sub third_field { my $x = (split ' ', $a)[2]; my $y = (split ' ', $b)[2]; $x <=> $y; } #### for (by_third_field ) { print "Record: $_"; } sub by_third_field { map $_->[0], sort { $a->[3] <=> $b->[3] } map { [ $_, split ] } @_; }