Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re: Uniq and sort in perl

by johngg (Abbot)
on Jul 12, 2012 at 09:40 UTC ( #981347=note: print w/ replies, xml ) Need Help??


in reply to Uniq and sort in perl

Utilitarian has given you a method of printing unique entries but if you also want to sort them then further steps will be required. Instead of printing in your while loop, declare an array outside of the loop and push your lines onto it inside the loop. You can then print your sorted unique lines afterwards. I use the inet_aton() from Socket to translate the IP numbers to a sortable string and use a Schwartzian Transform to do the sorting.

use strict; use warnings; use Socket; my @lines = split m{(?<=\n)}, <<EOD; ows301.dom.com, 10.157.118.42, oem300.dom.com, 10.157.124.58, omo300.dom.com, 10.157.124.58, pwd302.dom.com, 10.157.126.58, pwd302.dom.com, 10.157.126.58, pwd302.dom.com, 10.157.126.58, pwd302.dom.com, 10.157.126.58, pwd302.dom.com, 10.157.126.58, EOD print do { my %seen; map { $_->[ 0 ] } sort { $a->[ 2 ] cmp $b->[ 2 ] || $a->[ 1 ] cmp $b->[ 1 ] } map { my @flds = split m{,\s*}; [ $_, $flds[ 0 ], inet_aton( $flds[ 1 ] ) ] } grep { not $seen{ $_ } ++ } @lines };

The output.

ows301.dom.com, 10.157.118.42, oem300.dom.com, 10.157.124.58, omo300.dom.com, 10.157.124.58, pwd302.dom.com, 10.157.126.58,

I hope this is helpful.

Cheers,

JohnGG


Comment on Re: Uniq and sort in perl
Select or Download Code
Re^2: Uniq and sort in perl
by slayedbylucifer (Scribe) on Jul 12, 2012 at 09:56 UTC
    Johngg, thanks for the response. your solution is way more detailed and I will definitely refer it in complex scripts where I would need sort and uniq...Thanks.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://981347]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (7)
As of 2014-11-23 20:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (134 votes), past polls