Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses

Re^2: @array elements multiplication with another array elements.

by grizzley (Chaplain)
on Oct 31, 2012 at 07:39 UTC ( #1001620=note: print w/replies, xml ) Need Help??

in reply to Re: @array elements multiplication with another array elements.
in thread @array elements multiplication with another array elements.

Wow, how can pairwise tell where the end of 1st array is? There was always the problem feature that regardless whether you write
my @array1 = (3,4,6,5,8); my @array2 = (2,2,4,5,1);
my @array1 = (3,4,6,5,8,2,2,4); my @array2 = (5,1);
using it with coma always results in flattened list:
is equivalent to
and yet pairwise deals with it:
c:\>perl -le "use List::MoreUtils qw/pairwise/; @a=(1..5);@b=(11..15); + print for pairwise {$a+$b} @a, @b" 12 14 16 18 20 c:\>perl -le "use List::MoreUtils qw/pairwise/; @a=(1..5, 11,12);@b=(1 +3..15); print for pairwise {$a+$b} @a, @b" 14 16 18 4 5 11 12

Replies are listed 'Best First'.
Re^3: @array elements multiplication with another array elements.
by tobyink (Abbot) on Oct 31, 2012 at 07:51 UTC

    It uses a prototype of &\@\@. That means the two arrays get implicitly turned into arrayrefs by the Perl parser. The body of the sub just sees a coderef and two arrayrefs - not a flattened list. See perlsub.

    perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'
      That's true! Wow, thanks, first example of prototypes being useful
      c:\>perl -le "sub f(\@\@) { print 'array ', ++$cnt ,': ', join ' ', @$ +_ for @_ } @a=(1..5, 11,12);@b=(13..15); f @a, @b" array 1: 1 2 3 4 5 11 12 array 2: 13 14 15

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1001620]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (7)
As of 2017-03-26 19:40 GMT
Find Nodes?
    Voting Booth?
    Should Pluto Get Its Planethood Back?

    Results (315 votes). Check out past polls.