Thread eine Frage zu objektorientertem Perl (149 answers)
Opened by ASDS at 2007-04-10 15:14

PerlProfi
 2007-04-19 20:22
#75946 #75946
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Ich hab deine Subroutine mal entwurstet:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
sub append
{
# pick parameters
my($self, @vals) = @_;

foreach my$val (@vals)
{
# get root
my $knoten = $self->{val};

while (1)
{
if (defined($knoten)) {
if ($val < $knoten->{'zahl'}) {
if (defined($knoten->{linksweg})) {
$knoten = $knoten->{linksweg};
}
else {
$knoten = knot($val);
last;
}
}
else {
#### $knoten ist hier nicht definiert ####
#### du greifst aber ständig drauf zu ####
if ($val >= $knoten->{'zahl'}) {
if (defined($knoten->{'rechtsweg'})) {
$knoten =$knoten->{'rechtsweg'};
}
else {
$knoten->{'rechtsweg'} = knot($val);
$knoten = $knoten->{rechtsweg};
last;
}
}
}
}
}
}

Am Ende war eine } zu viel.
Ich habe $wurzel ganz rausgenommen, wozu war das denn da ?
Den Anfang habe ich so verändert, dass du dir die Werte nicht mehr doppelt holst.
Ansonsten siehst du ja, $knoten ist nicht definiert, du benutzt es aber immer wieder in diesem else-Block.

MfG\n\n

<!--EDIT|PerlProfi|1176999875-->

View full thread eine Frage zu objektorientertem Perl