in reply to Arrays of Arrays

my @array = (1, 2, 3, 4, 5, 6, 7, 8); my @new_array = map{ [$array[2 * $_ - 1], $array[2 * $_]] } 1 .. @arra +y/2;

Replies are listed 'Best First'.
Re^2: Arrays of Arrays
by johngg (Canon) on Nov 07, 2008 at 11:50 UTC
    You have an off-by-one error here.

    $ perl -MData::Dumper -e ' > my @array = (1, 2, 3, 4, 5, 6, 7, 8); > my @new_array = map{ [$array[2 * $_ - 1], $array[2 * $_]] } 1 .. @ar +ray/2; -> print Dumper(\@new_array);' $VAR1 = [ [ 2, 3 ], [ 4, 5 ], [ 6, 7 ], [ 8, undef ] ]; $

    This works.

    $ perl -MData::Dumper -e ' > my @array = (1, 2, 3, 4, 5, 6, 7, 8); > my @new_array = map{ [$array[2 * $_], $array[2 * $_ + 1]] } 0 .. $#a +rray/2; -> print Dumper(\@new_array);' $VAR1 = [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 7, 8 ] ]; $

    Cheers,

    JohnGG

Re^2: Arrays of Arrays
by jwkrahn (Abbot) on Nov 07, 2008 at 11:47 UTC
    $ perl -le' my @array = (1, 2, 3, 4, 5, 6, 7, 8); my @new_array = map{ [$array[2 * $_ - 1], $array[2 * $_]] } 1 .. @arra +y/2; use Data::Dumper; print Dumper \@new_array; ' $VAR1 = [ [ 2, 3 ], [ 4, 5 ], [ 6, 7 ], [ 8, undef ] ];

    This appears to work better:

    $ perl -le' my @array = 1 .. 8; my @new_array = map [ @array[ 2 * $_ - 2, 2 * $_ - 1 ] ], 1 .. @array +/ 2; use Data::Dumper; print Dumper \@new_array; ' $VAR1 = [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 7, 8 ] ];