I have been struggling with this for a couple days now and cannot seem to figure it out.
I have an array of email addresses that were created via push(@emails,$email) in a while loop.
I am attempting to create a list of unique domains with occurrence count of each in the array.
Ordered by number of occurrences.
So, if the 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 this example based on emails in a file but, WAY over my head. Can someone help me in a more verbose code example that can be used with an 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 also tried: (more to my level of lack of understanding)
foreach my $domain (sort keys %$domains) {
print "$domain"."=";
print $domains->{$domain}."\n";
};
AND
my %countdoms;
$countdoms{$_}++ for @domains;
print "$_ $countdoms{$_}\n" for keys %countdoms;
The best result I got of many different attempts was a total count (which was 1812 (accurate count) with a number 2 next to it. I am close, possibly?
If you have your email address populated in an array this’ll get you a count for each domain. I’m sure someone can produce something prettier!