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);