> @a= qw (68 3 5 67 54 23 69 ); > > @b = sort {-1} @a; ### what happens here ! > results = 5,3,68,67,69,23,54 >
Hey look, its reversed the order of the numbers either side of the number 67! Extremely useful :P You shouldn't use this sort, since it breaks for other quantities of numbers. > @c = sort {$a <=> $b} @a; ### what happens here ! > results = 3,5,23,54,67,68,69 Sorts numerically. > I know that sort by default sort in ascii order, I > wanted to know what exactly happens to the "spaceship" > operator. Could somebody help me to visualize what's > taking place. > > Thanks Sort needs a subroutine which returns -1, 0, 1 as the result of comparing two elements. The values mean (where $a and $b is a pair of values from the array): -1 = put $a before $b 0 = doesn't matter which way to put $a and $b (i.e equal) 1 = put $a after $b Now, the lovely <=> operator returns the following: -1 - when $a is less than $b 0 - when $a is equal to $b 1 = when $a is greater than $b Combine these: When $a is less than $b put $a first. When $a is same as $b leave alone. When $a is greater than $b put $a second. Result: You have a numerical sort! You don't really need to know the impliementation of the sort (I was going to explain it, but my explaination seemed too hazy). Jonathan Paton __________________________________________________ Do You Yahoo!? Everything you'll ever need on one web page from News and Sport to Email and Music Charts http://uk.my.yahoo.com -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]