There, @foo contains three references to arrays, all of which are of different lengths. One of them contains a reference to another array as well as an ordinary scalar. The following code will tell you the largest number of elements in each dimension. Dimensions are numbered starting at zero (I assume $[ has not been altered):@foo = ( [0, 1, 2, 3, 4, 5], [0, 1, 2], [0, [ 0, 1, 2, 3 ]] );
my @foo = ( [0, 1, 2, 3, 4, 5], [0, 1, 2], [0, [ 0, 1, 2, 3 ]] ); my @maxlength = (); figger_out_depth(0, @foo); print "max dimensions:\n"; print " $_: $maxlength[$_]\n" foreach (0..$#maxlength); sub figger_out_depth { my $depth = shift; $maxlength[$depth] = 0 unless(defined($maxlength[$depth])); foreach my $element (@_) { figger_out_depth($depth + 1, @{$element}) if(ref($element) eq +'ARRAY'); } $maxlength[$depth] = $#_ + 1 if($#_ >= '0'.$maxlength[$depth]); }
In reply to Re: How cand I find each dimension x,y,z of a 3D arrays
by DrHyde
in thread How cand I find each dimension x,y,z of a 3D arrays
by Arnaud
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |