Perl - How do I count and print occurrences of domains in email address array? -


i have been struggling couple days , cannot seem figure out.

i have array of email addresses created via push(@emails,$email) in while loop.

i attempting create list of unique domains occurrence count of each in array.

ordered number of occurrences.

so, if array @emails has:

john@yadoo.com ringo@geemail.net george@zoohoo.org paul@yadoo.com

i can print:

yadoo.com 2 geemail.net 1 zoohoo.org 1 

i found example based on emails in file but, way on head. can me in more verbose code example can used array of email addresses?

perl -e 'while(<>){chomp;/^[^@]+@([^@]+)$/;$h{$1}++;} foreach $k (sort { $h{$b} <=> $h{$a} } keys %h)  {print $h{$k}." ".$k."\n";} infile 

i tried: (more level of lack of understanding)

foreach $domain (sort keys %$domains) {   print "$domain"."=";   print $domains->{$domain}."\n"; }; 

and

my %countdoms; $countdoms{$_}++ @domains; print "$_ $countdoms{$_}\n" keys %countdoms; 

the best result got of many different attempts total count (which 1812 (accurate count) number 2 next it. close, possibly?

if have email address populated in array this'll count each domain. i'm sure can produce prettier!

my @emails = ('john@yadoo.com','ringo@geemail.net','george@zoohoo.org','paul@yadoo.com');  %domaincount;  foreach(@emails){     if ($_ =~ /@(\w+.*)/){         $domaincount{$1}++;     } }  $domain (sort { $domaincount{$b} <=> $domaincount{$a}} keys %domaincount ){     print "$domain - $domaincount{$domain}\n"; } 

Comments

Popular posts from this blog

c# - how to write client side events functions for the combobox items -

exception - Python, pyPdf OCR error: pyPdf.utils.PdfReadError: EOF marker not found -