in reply to Re^2: Using map function to print few elements of list returned by sort function
in thread Using map function to print few elements of list returned by sort function

No, but you can chain maps.

Cheers Rolf

( addicted to the Perl Programming Language)

  • Comment on Re^3: Using map function to print few elements of list returned by sort function

Replies are listed 'Best First'.
Re^4: Using map function to print few elements of list returned by sort function
by jaypal (Beadle) on May 26, 2014 at 00:28 UTC

    With your hint, I was able to do the following

    perl -F':' -lane ' push @{$h{$F[1]}}, [$F[0],$_] }{ print $_->[1] for map { splice [sort {$b->[0] <=> $a->[0]} @{$h{$_}}], +0,4 } keys %h' file 20470:ZM:Samfya:Africa 20149:ZM:Sesheke:Africa 18638:ZM:Siavonga:Africa 699385:ZW:Bulawayo:Africa 61739:ZW:Chinhoyi:Africa 47294:ZW:Chegutu:Africa 37423:ZW:Bindura:Africa

    Thanks LanX, your guidance was much appreciated.

      this can be simplified (and will work with older perl-versions)

      perl -F':' -lane ' push @{$h{$F[1]}}, [$F[0],$_] }{ print $_->[1] for map { ( sort {$b->[0] <=> $a->[0]} @$_ )[0..3] } val +ues %h' file 20470:ZM:Samfya:Africa 20149:ZM:Sesheke:Africa 18638:ZM:Siavonga:Africa 699385:ZW:Bulawayo:Africa 61739:ZW:Chinhoyi:Africa 47294:ZW:Chegutu:Africa 37423:ZW:Bindura:Africa

      Please note that countries with less than 4 cities will have empty lines.

      But I'd rather prefer chaining only maps...

      Cheers Rolf

      ( addicted to the Perl Programming Language)

      update

      to avoid empty lines skip the -l option

      perl -F':' -ane ' push @{$h{$F[1]}}, [$F[0],$_] }{ print $_->[1] for map { ( sort {$b->[0] <=> $a->[0]} @$_ )[0..3] } val +ues %h' file 20470:ZM:Samfya:Africa 20149:ZM:Sesheke:Africa 18638:ZM:Siavonga:Africa 699385:ZW:Bulawayo:Africa 61739:ZW:Chinhoyi:Africa 47294:ZW:Chegutu:Africa 37423:ZW:Bindura:Africa

      elaboration

      values instead of keys

      (List)[slice] instead of splice

      -l chomps and sets auto-newline in $\

        Thanks Rolf, using values instead of keys does make a lot sense. Thank you for sharing this. :)

Re^4: Using map function to print few elements of list returned by sort function
by jaypal (Beadle) on May 25, 2014 at 23:33 UTC

    Thanks LanX for the hint. Will try it out now.