in reply to Re: Re: dimensioning arrays
in thread dimensioning arrays

Thanks, Now it works.
It would be nice for me to have a general subroutine
sub initialise(\@dimensions,$initialisation_value,\@matrix)
that gives back an initalised matrix of n-dimensions. I'll try as learning exercise, if it is not straightforward for someone to write it down here. There's a lot to learn from a snippet of code..:)
rob

Replies are listed 'Best First'.
general solution Re: Re: Re: Re: dimensioning arrays
by andye (Curate) on Feb 17, 2001 at 01:18 UTC
    This is a solution. Not very efficient though (sorry)... but I found it interesting.

    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]

    Since lists are 'flattened' in subroutine calls, you could put the dimensions in an array @dim = (3, 2, 4) and call it using ar_init(@dim, 'foo') - it would have the same effect. Note that the whole thing is constructed using references - you'll need to understand references for whatever solution you use. I like the explanation of reference syntax in _Effective_Perl_Programming_.