Home » Howtos » Perlfunc » Sort function |
The sort function sorts a list (an array). The default is to sort alphabetically. However, you can define your own sorts to get around numbers and complex data structures.
#!/usr/bin/perl use strict; use warnings; my @strings = ("Becky", "Simon", "Bianca", "Steven", "Greg", "Andrew"); my @sorted_strings = sort @strings; print "@sorted_strings\n";
This gives you the following output:
Andrew Becky Bianca Greg Simon Steven
The Perl sort function sorts by strings instead of by numbers. If you were to use:
#!/usr/bin/perl use strict; use warnings; my @numbers = (23, 1, 22, 7, 109, 9, 65, 3); my @sorted_numbers = sort @numbers; print "@sorted_numbers\n";
The output you would see would be:
1 109 22 23 3 65 7 9
To sort numerically, declare your own sort block and use the flying saucer operator <=>:
#!/usr/bin/perl use strict; use warnings; my @numbers = (23, 1, 22, 7, 109, 9, 65, 3); my @sorted_numbers = sort {$a <=> $b} @numbers; print "@sorted_numbers\n";
The output would now be:
1 3 7 9 22 23 65 109
Note that $a and $b do not need to be declared, even with use strict on, because they are special sorting variables.
To find out more, see the tutorial Sorting in perl, or run the command:
perldoc -f sort