in reply to Creating combinations using arrays

Pretty simple actually...

my @colors = qw/ ***insert colors here*** /; my @sizes = qw/ **** insert sizes here ***/ ; my @shapes= qw/ *** insert shapes here ***/; my @combos=(); foreach my $color(@colors){ foreach my $size(@sizes) { foreach my $shape(@shapes) { push @combos,{ color => $color, size => $size, shape => $shape}; } } }


Peter L. Berghold -- Unix Professional
Peter -at- Berghold -dot- Net; AOL IM redcowdawg Yahoo IM: blue_cowdawg

Replies are listed 'Best First'.
Re^2: Creating combinations using arrays
by DreamT (Pilgrim) on Mar 05, 2013 at 16:33 UTC
    Well, the problem is that i don't know which properties that are available at the time, so instead of @colors, @sizes, @shapes, I need something more dynamic.
      > Well, the problem is that i don't know which properties that are available at the time, so instead of @colors, @sizes, @shapes, I need something more dynamic.

      So use a recursive function!

      rec_for([1..3],["a".."c"],[10..13]); my @tuple; sub rec_for { if (@_) { my $a_list = shift; for my $x (@$a_list) { push @tuple, $x; rec_for(@_); pop @tuple; } } else { print "tuple: @tuple\n"; } }

      /usr/bin/perl -w /home/lanx/B/PL/PM/recursive_for.pl tuple: 1 a 10 tuple: 1 a 11 tuple: 1 a 12 tuple: 1 a 13 tuple: 1 b 10 tuple: 1 b 11 ...

      Cheers Rolf

      UPDATE

      if you need the result in a %hash, just alter the routine to process key-value pairs

      rec_for(a=>[1..3],b=>["a".."c"],c=>[10..13]);