I've never really understood anonymous subroutines, or inline subroutines, which is what you usually do with sort. But I imagine I should create a named subroutine that returns 1,0 or -1 according to my own criteria as listed above, am I right?
You are right there. Create a sub that when given any 2 atoms, returns 1 if the first is larger than the second, 0 if they are equal, or -1 if the first is smaller than the second, for whatever definition of larger, equal and smaller you are using. (Note: use $a and $b for the first and second atom given to the sub, as in my example below).
As for the inline/anonymous subs for sort, they are fairly simple. For example if you had:
You could replace it with:sub foo { return $a cmp $b } my @sorted = sort foo @unsorted;
or even:my @sorted = sort { return $a cmp $b } @unsorted;
as a sub implicitly returns the value of the last statement evaluated.my @sorted = sort { $a cmp $b } @unsorted;
That's pretty much all there is to using an anonymous sub with sort. Of course, if you are using the same sort in more than 1 place, it would be better to make a named sub, that way you only have to change 1 thing if you decide to sort differently later.
In reply to Re: sorting according to greek alphabet in roman letters
by Paladin
in thread sorting according to greek alphabet in roman letters
by seaver
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |