sub ar_init { my $shift = shift ; (defined $_[0]) ? [ map { ar_init(@_) } (1..$shift) ] : $shift ; } my $array_ref = ar_init(3, 2, 4, 'pop '); print $array_ref->[2][0][3]