Here in the Monastery, see List Processing, Filtering, and Sorting in Tutorials. See perlvar for info on the $a $b special variables (used for other things than just sorting), perlop for the spaceship <=> and its close cousin, the cmp operator. Also see sort for more info on this built-in function, and the sort pragma for info on controlling it. See also A Fresh Look at Efficient Perl Sorting.
... what are these variables
@$a @$b
When sort-ing a list, $a $b are aliased (see 'alias' in perlglossary) to various pairs of elements in the list to be sorted so that they may be compared and, if necessary, rearranged into sorted order (whatever 'sorted' means in a given context). If a list of array references is being sorted (as in some of the code examples), $a $b become aliases of these references. If $scalar is an array reference, then @$scalar dereferences it. If an array reference is dereferenced in numeric context, then the number of elements of the array is returned.
If you are sorting a list of array references by the length of each referenced array (i.e., the number of elements in each array) as in
my @sorted = sort { @$a <=> @$b } \(@ra1, @ra2, @rax, @ray);
@$a and @$b in the numeric context imposed by the <=> (spaceship) numeric comparison operator evaluate to the number of elements in their respective aliased referents.
Update: Added @$a <=> @$b explanation.
| [reply] [d/l] [select] |