sub ar_init { (defined $_[1]) ? [ map { ar_init(@_) } (1..shift()) ] : shift() ; } my $r_array = ar_init(3,3,'-');