in reply to dynamic matrix

Hi. Your question isn't really clear to me, but I guess you want a cartesian product. For example, with the input you gave, I think you want the output

1 5 7 1 5 4 1 5 9 1 3 7 1 3 4 ... 3 8 4 3 8 9
That's a problem I've met quite a few times but I always find it hard to implement them (especially the more complicated versions. Here is a solution:
use warnings; use strict; sub cartesian_product { @_ or return []; my @last = @{pop()}; map { my @x = @$_; map { [@x, $_] } @last } cartesian_product( +@_); } my @columns = ([1, 2, 5, 7, 3], [5, 3, 1, 8], [7, 4, 9]); my @r = cartesian_product(@columns); for (@r) { print join(" ", @$_), "\n"; } __END__