diff options
| author | Markus "Holli" Holzer <holli.holzer@gmail.com> | 2020-05-30 22:48:31 +0200 |
|---|---|---|
| committer | Markus "Holli" Holzer <holli.holzer@gmail.com> | 2020-05-30 22:48:31 +0200 |
| commit | 5feccc2ea3859be3483c12f399bc375a7c2e7884 (patch) | |
| tree | ae52caeafe9f950e311974d57324c28d24f5e70f | |
| parent | 8f6f95c4e9691ce1dddb7ae545609a661b7b9e20 (diff) | |
| download | perlweeklychallenge-club-5feccc2ea3859be3483c12f399bc375a7c2e7884.tar.gz perlweeklychallenge-club-5feccc2ea3859be3483c12f399bc375a7c2e7884.tar.bz2 perlweeklychallenge-club-5feccc2ea3859be3483c12f399bc375a7c2e7884.zip | |
really final
| -rw-r--r-- | challenge-062/markus-holzer/raku/ch-1.raku | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/challenge-062/markus-holzer/raku/ch-1.raku b/challenge-062/markus-holzer/raku/ch-1.raku index 5a1e178e39..098d35f0d0 100644 --- a/challenge-062/markus-holzer/raku/ch-1.raku +++ b/challenge-062/markus-holzer/raku/ch-1.raku @@ -44,15 +44,19 @@ sub output-email-addresses( $unique, @addresses ) { ?? @addresses.squish( as => *.norm ) !! @addresses } -multi sub sort-mail-addresses( $handles where { .cache.all ~~ IO::Handle } ) -{ - my &address = -> $address { Mail.new( :$address ) } - my &valid = -> $mail { $mail.valid || $*ERR.say("Bad data <$mail>") && False } - my &sort = -> $a, $b { $a.domain cmp $b.domain || $a.mailbox cmp $b.mailbox } - +multi sub sort-mail-addresses( $handles where { .cache.all ~~ IO::Handle } ) { $handles .map( | *.lines ) - .map( &address ) - .grep( &valid ) - .sort( &sort ) -}
\ No newline at end of file + .map( &make-mail ) + .grep( &valid-mail ) + .sort( &sort-mail ) } + +sub make-mail( $address ) { + Mail.new( :$address ) } + +sub valid-mail( $mail ) { + $mail.valid || + $*ERR.say("Bad data <$mail>") && False } + +sub sort-mail( $a, $b ) { + $a.domain cmp $b.domain || $a.mailbox cmp $b.mailbox } |
