#! perl -slw use strict; use List::Comprehensions; sub expandDims { return unless ref $_[ 0 ] eq 'ARRAY'; return [ 0 .. $#{ $_[ 0 ] } ], expandDims( $_[ 0 ][ 0 ] ); } my $ref2D = [ map [ 0 .. 2 ], 0..3 ]; my $ref3D = [ map [ map [ 0..1 ], 0..2, ], 0..3 ]; my $ref4D = [ map [ map [ map [ 0..1 ], 0..2, ], 0..3 ], 0..4 ]; my $ref = ( $ref2D, $ref3D, $ref4D )[ rand 3 ]; comp1 { my $val = $ref; $val = $val->[ $_ ] for @_; printf "[%s] := %s\n", join('][', @_), $val; } expandDims( $ref );