diff options
| -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 } |
