Thread Tree::Simple Bug? (9 answers)
Opened by pktm at 2008-09-07 01:27

topeg
 2008-09-07 19:22
#114328 #114328
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Die Suchfunktion oben hat eine Unzulänglichkeit:
Sie findet immer nur den ersten "Node" zu einem Wert.
Das Macht sie schnell, aber es kann mehrere geben Nodes geben, die den Wert haben.
Darum eine kleine Änderung:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
sub find
{
  my $tree = shift;
  my $node_value=shift;
  my @childs=();
  my $func;
  $func = sub ($)
  {
    my $child=shift();
    push(@childs,$child) if($child->getNodeValue() eq $node_value);
    my @children=$child->getAllChildren();
    $func->(shift(@children)) while(@children);
  };
  $func->($tree);
  return @childs;
}


Aufruf:
Code (perl): (dl )
my @nodes=find($tree,"<NodeValue>");

View full thread Tree::Simple Bug?