With the inserted placeholder in the first position of every array as a grouping item, the traverse subroutune looks like this:
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";
}
}
}
The result is:
/A/1
/A/B/2
/A/B/3
/A/B/4
/A/5
/A/C/6
/A/C/D/7
/A/C/D/8
/A/C/D/9
I tried to manage the route of groups and subgroups with another array, but got this message when trying to add the first items from the second array to the first one:
Can't use string ("A") as an ARRAY ref while "strict refs" in use at t
+est.pl line 6
I couldnīt get rid of it. I also tried passing the arguments by reference, but I got many other error mesages on every change I did.