in reply to Re^4: Need help figuring out how to order/eval the numbers
in thread Need help figuring out how to order/eval the numbers
The function you give sort has one job: to tell sort which order you want between two items: $a and $b. If you want the value in $a to sort after the value in $b, your function needs to return 1. If you want it to sort before $b, return -1.
So you don't need to figure out how to get the values, they're handed to you as $a and $b. You simply need to tell sort how to decide which order you want for any two values.
$ cat foo.pl use strict; use warnings; my @list = (qw(now is the time)); sub compare { my ($left, $right) = @_; print "Comparing $left and $right.\n"; return 1 if $left gt $right; return -1 if $left lt $right; return 0; } print "BEFORE: ", join(" ", @list), "!\n"; @list = sort { compare($a,$b) } @list; print "AFTER: ", join(" ", @list), "?\n"; $ perl foo.pl BEFORE: now is the time! Comparing now and is. Comparing the and time. Comparing is and the. Comparing the and now. AFTER: is now the time?
Update: Added punctuation for a bit of fun...
...roboticus
When your only tool is a hammer, all problems look like your thumb.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^6: Need help figuring out how to order/eval the numbers
by perlynewby (Scribe) on Jun 25, 2015 at 19:32 UTC |