From c15f69e800292020dc94c7ee60a6c9be85eec854 Mon Sep 17 00:00:00 2001 From: Simon Miner Date: Mon, 25 May 2020 16:48:43 -0400 Subject: Add ch-01.pl to sort email addresses --- challenge-062/simon-miner/perl/ch-1.pl | 17 +++++++++++++++++ challenge-062/simon-miner/perl/emails.txt | 5 +++++ 2 files changed, 22 insertions(+) create mode 100644 challenge-062/simon-miner/perl/ch-1.pl create mode 100644 challenge-062/simon-miner/perl/emails.txt diff --git a/challenge-062/simon-miner/perl/ch-1.pl b/challenge-062/simon-miner/perl/ch-1.pl new file mode 100644 index 0000000000..eadfcd1b17 --- /dev/null +++ b/challenge-062/simon-miner/perl/ch-1.pl @@ -0,0 +1,17 @@ +#!/usr//bin/perl + +use strict; +use warnings; + +my %domains = (); +while ( <> ) { + chomp; + my ( $mailbox, $domain ) = split( m/\@/ ); + push( @{ $domains{$domain} }, $mailbox ); +} + +my @sorted = (); +for my $domain ( sort( { lc( $a ) cmp lc( $b ) } keys( %domains ) ) ) { + push( @sorted, map( {"$_\@$domain"} sort( @{ $domains{$domain} } ) ) ); +} +print join( "\n", @sorted ) . "\n"; diff --git a/challenge-062/simon-miner/perl/emails.txt b/challenge-062/simon-miner/perl/emails.txt new file mode 100644 index 0000000000..5dc3f2ceb0 --- /dev/null +++ b/challenge-062/simon-miner/perl/emails.txt @@ -0,0 +1,5 @@ +name@example.org +rjt@cpan.org +Name@example.org +rjt@CPAN.org +user@alpha.example.org -- cgit From 653cb05ccd2c99ab4c77e0f700fc7aeddb03bb8f Mon Sep 17 00:00:00 2001 From: Simon Miner Date: Mon, 25 May 2020 16:58:10 -0400 Subject: Add -u CLI flag to print unique sorted emails --- challenge-062/simon-miner/perl/ch-1.pl | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/challenge-062/simon-miner/perl/ch-1.pl b/challenge-062/simon-miner/perl/ch-1.pl index eadfcd1b17..6cce429f77 100644 --- a/challenge-062/simon-miner/perl/ch-1.pl +++ b/challenge-062/simon-miner/perl/ch-1.pl @@ -2,12 +2,22 @@ use strict; use warnings; +use Getopt::Std; + +my %args = (); +getopts( 'u', \%args ); my %domains = (); +my %seen = (); while ( <> ) { chomp; my ( $mailbox, $domain ) = split( m/\@/ ); + + my $normalized = $mailbox . '@' . lc( $domain ); + next if $args{u} && exists( $seen{$normalized} ); + push( @{ $domains{$domain} }, $mailbox ); + $seen{$normalized} = 1; } my @sorted = (); -- cgit