$VAR1 = 'ng1';
$VAR2 = [
'ng1_1',
[
'ng1_1_1',
[
'ng1_1_1_u1',
'ng1_1_1_u2',
'ng1_1_1_u3'
],
'ng1_1_2',
'ng1_1_3',
'ng1_1_4'
],
'ng1_2',
'ng1_3',
'ng1_4'
];
$VAR3 = 'ng2';
$VAR4 = [
'ng2_1',
[
'ng2_1_u1',
'ng2_1_u2',
'ng2_1_u3'
],
'ng2_2',
'ng2_3',
'ng2_4'
];
$VAR5 = 'ng3';
$VAR6 = [
'ng3_1',
'ng3_2',
'ng3_3',
'ng3_4'
];
####
[0] ng1
[1][0] ng1_1
[1][1][0] ng1_1_1
[1][1][1][0] ng1_1_1_u1
[1][1][1][1] ng1_1_1_u2
[1][1][1][2] ng1_1_1_u3
[1][1][2] ng1_1_2
[1][1][3] ng1_1_3
[1][1][4] ng1_1_4
[1][2] ng1_2
[1][3] ng1_3
[1][4] ng1_4
[2] ng2
[3][0] ng2_1
[3][1][0] ng2_1_u1
[3][1][1] ng2_1_u2
[3][1][2] ng2_1_u3
[3][2] ng2_2
[3][3] ng2_3
[3][4] ng2_4
[4] ng3
[5][0] ng3_1
[5][1] ng3_2
[5][2] ng3_3
[5][3] ng3_4
####
# &findElementPosition(\@tree,"ng1_1_1_u3");
#
sub findElementPosition{
my ($tree,$needle) = @_;
for my $treeElement (@{$tree}){
if (ref $treeElement eq "ARRAY"){
push @position,0;
&findElementPosition($treeElement,$needle);
pop @position;
$position[-1]++;
}
else{
if ($treeElement eq $needle){
for (@position){ print "[$_]" }
print " " . $treeElement . "\n";
}
$position[-1]++;
}
}
}
####
[1][1][1][2] ng1_1_1_u3
####
pop @position;
$position[-1]--;