dReKurCe has asked for the wisdom of the Perl Monks concerning the following question:

Greetings Monks: My question is in regards to the following code:

for $x(1...3){ for$y(1...3){ $pro=$x ** $y; push @products, $pro; } }
Specifically, what methodology is used to read each succesive set into it's own array?

I managed to sort this out without the use of modules by using splice. Thanks for the help

#! /usr/bin/perl for $x(1...8){ for (1...8){ $y=$x*$_; push @products,$y; } print "\n"; @pro=splice (@products,0,8); print "@pro\n"; }

Replies are listed 'Best First'.
Re: Seperating Compound Lists
by edoc (Chaplain) on Feb 11, 2005 at 02:12 UTC
    my @sets; for $x(1..3){ my @products; for $y(1..3){ $pro = $x ** $y; push @products, $pro; } push @sets, \@products; } use Data::Dumper; print Data::Dumper->Dumper(\@sets);

    cheers,

    J

      And most of the time, a for/push combination converts very naturally to a map:
      my @sets; for my $x (1..3){ my @products = map { $x ** $_ } (1..3); push @sets, \@products; } use Data::Dumper; print Dumper(\@sets);
      Then we still have a for/push. Since we have to use $_ for our loop variable in map, it might seem a little tricky, but we're nesting these, so we can do this:
      my @sets = map { my $x = $_; # Copy outer loop variable my @products = map { $x ** $_ } (1..3); \@products; } (1..3);
      Of course, there's no real need for the @products array:
      my @sets = map { my $x = $_; # Copy outer loop variable [map { $x ** $_ } (1..3)]; } (1..3);

      Caution: Contents may have been coded under pressure.
Re: Separating Compound Lists
by Roy Johnson (Monsignor) on Feb 11, 2005 at 02:07 UTC
    I think you're looking for: perldoc perlreftut

    Caution: Contents may have been coded under pressure.