On Aug 9, Jeremy Kister said:

my @s = map  $_->[ 1 ],
        sort { $a->[ 0 ] cmp $b->[ 0 ] }
        map  [ inet_aton( $_->{ N } ), $_ ],
        @a;

Now to analyze WTF we're doing here :)

Paul's answer had a slight typo in it -- he was comparing $a->[0], $a->[1], $a->[2], and $a->[3], when he should have been comparing $a->[1], $a->[2], $a->[3], and $a->[4].

As for John's answer, it does the same thing as Paul's would have. It just bundles the logic by using the Socket module's inet_aton() function.

inet_aton() takes an IP address or hostname and returns a four-byte string representing the address. Each byte represents a number from 0 to 255, stored as an ASCII character. The IP address 65.66.67.68 would be stored as "ABCD".

It then compares the four-byte strings, using simple string comparison, since 'cmp' uses the ASCII values of the characters in the string to determine if a string is "less than" another.

--
Jeff "japhy" Pinyan         %  How can we ever be the sold short or
RPI Acacia Brother #734     %  the cheated, we who for every service
http://japhy.perlmonk.org/  %  have long ago been overpaid?
http://www.perlmonks.org/   %    -- Meister Eckhart

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to