http://www.perlmonks.org?node_id=1035488


in reply to Re: Perl 6 implementation of the following Perl 5 code
in thread Perl 6 implementation of the following Perl 5 code

The 1st/2nd Perl 6 solution is interesting because you read it from left to right treating map,grep and sort as object methods.

The Perl 5 version is read from right to left treating map,grep and sort as functions. I've attempted to do it the functional way in Perl 6 and got the following to work on Rakudo.

use v6; say reverse .words for map {.[1]} ,sort( map { [.words[*-1],$_] } ,grep {/SRC1/} ,lines() );

The syntax for doing Perl 6 functionally seems to be more untidy than the Perl 5 version and make it a bit harder to read. The required comma, the required parenthesis around sort. Its not too bad though. Will get some getting use to.

Replies are listed 'Best First'.
Re^3: Perl 6 implementation of the following Perl 5 code
by moritz (Cardinal) on May 28, 2013 at 05:26 UTC

    If you make the commas stand out by putting them up front, it looks untidy, yes. As they say, the key is to play to Perl's strengths, not to its weaknesses.

    And if you include unnecessary punctuation, it also looks untidy. This one seems to work fine:

    use v6; say reverse .words for map *[1], sort map { [.words[*-1],$_] }, grep /SRC1/, lines;

      I can confirm this works and Infact its actually much cleaner for people who likes one-liner

      say reverse .words for map *[1], sort map {[.words[*-1],$_]}, grep /ICSE/, lines;

      Hmm ... now I'm wondering why I couldn't get the sort to work without the parenthesis previously.