oliverhuber has asked for the wisdom of the Perl Monks concerning the following question:
finding my ways through the vast fields of perl using "intermediate perl" by o'reilly as a guide ... currently, in the middle of not-loosing-my-head while trying to understand the schwartzian transform ... one thing acutally strikes me: the following code is working sweet as:
my @words = qw (Oli Sonni sonja oliver speedy 112); my @output = map $_->[0], sort {$a->[1] cmp $b->[1]} map { my $string = $_; $string =~ tr/A-Z/a-z/; $string =~ tr/a-z//cd; [$_, $string]} @words; for my $word (@output){say $word;}
The output, as expected is a "dictionary"-sorted list (acutllay, that's the solution proposed in the actual book itself): 123 ... Oli ... speedy However, I did come up with quite a similar solution. The only difference is that I stuffed the regexes into a subroutine:
my @words = qw (Oli Sonni sonja oliver speedy 112); my @output = map $_->[0], sort {$a->[1] cmp $b->[1]} map [$_, transform($_)], @words; sub transform{ my $string = shift; $string =~ tr/A-Z/a-z/;#kleinschreibung $string =~ tr/a-z//cd; } for my $word (@output){say $word;}
As a result, I am getting the original sorting of the list. Some enlighted monk being able to see what I do not see ...?
Thanks in advance, Oli
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Schwartzian Transfrom using a subroutine
by BrowserUk (Patriarch) on Jan 09, 2013 at 11:53 UTC | |
by oliverhuber (Initiate) on Jan 09, 2013 at 12:13 UTC | |
by jwkrahn (Abbot) on Jan 09, 2013 at 13:33 UTC | |
by BrowserUk (Patriarch) on Jan 09, 2013 at 13:45 UTC | |
Re: Schwartzian Transfrom using a subroutine
by choroba (Cardinal) on Jan 09, 2013 at 11:47 UTC |