aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-062/markus-holzer/raku/ch-1.raku24
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 }