Sort function in Perl

perl

Solution

The default implementation of Perl's `sort` function is to sort values as strings. To perform numerical sorting:

my @a = sort {$a <=> $b} @b;

The linked page shows other examples of how to sort case-insensitively, in reverse order (descending), and so on.

You can create explicit subroutines to prevent duplication:

sub byord { $a <=> $b };
...
@a = sort byord @b;

This is functionally equivalent to the first example using an anonymous subroutine.

Problem

Consider: ``` use warnings; my @a = (1, 11, 3, 5, 21, 9, 10); my @b = sort @a; print "@b"; ``` Output: 1 10 11 21 3 5 9 Codepad link: http://codepad.org/Fvhcf3eP I guess the sort function is not taking the array's elements as an integer. That is why the output is not: 1 3 5 9 10 11 21 Is it? How can I get the above result as output?

Original source