my $dim = 3;
my @size = (4, 5, 6);
my $var = 'a';
my $str = '';
for my $i (0 .. $dim - 1) {
$str .= ' ' x $i .
"for my \$$var (0 .. $size[$i] - 1) {\n";
$var++;
}
$var = 'a';
$str .= ' ' x $dim . '$array' .
join '' => map {'[$ ' . $var++ . ']'} 1 .. $dim;
$str .= " = 0;\n";
$str .= " " x ($dim - $_) . "}\n" for 1 .. $dim;
####
for my $a (0 .. 4 - 1) {
for my $b (0 .. 5 - 1) {
for my $c (0 .. 6 - 1) {
$array[$ a][$ b][$ c] = 0;
}
}
}
##
##
my $i = 0;
my $sub = 'sub { $array' .
join '' => map {'[$_[' . $i++ . ']]'} 1 .. $dim;
$sub .= ' = $_[-1] }' . "\n";
##
##
sub { $array[$_[0]][$_[1]][$_[2]] = $_[-1] }