my @xx = ['A',1,['B',2,3,4],5,['C',6,['D',7,8,9]]]; traverse("", @xx); sub traverse { my $d = $_[0] . "/" . $_[1][0]; for my $i (1 .. @{$_[1]}-1) { if (ref $_[1][$i] eq 'ARRAY') { traverse($d, $_[1][$i]); } else { print $d . "/" . $_[1][$i] . "\n"; } } }