Ach ich lehn Ronnies hilfe doch nicht ab... aus der Darstellung hab ich mir eh rausgeholt, was ich brauchte oder verstanden habe...
die Fehlermeldung steht doch eh oben:
Use of uninitialized value in concatention <.> or string at Baum.pm line 100 <STDIN> line 10.
Wo der fehler is weiß ich doch eh schon, dank renee und zwar hier:
print "$self->{'ref_wurzel'}->{'zahl'}\n";
und hier meinte er... dass es daran liegt, dass in meiner sub newtree etwas nicht passt... auch die kann ich gerne nochmal einstellen, so wie ich sie jetzt hab...
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
sub newtree {
######################
# Erstellen des Trees
my $ref_liste1 = shift;
my $knoten = undef;
my $ref_wurzel = undef;
for my $zzahl (@$ref_liste1){
# my $refvalue = $ref_wurzel;
if ($knoten)
{ while (1) {
if($zzahl < $$knoten{'zahl'}) { #Beginn des Vergleichs
if(defined($$knoten{'linksweg'}))
{
$knoten = $$knoten{'linksweg'};
}
else {
$knoten->{'linksweg'} = knot($zzahl);
$knoten = $ref_wurzel;
last; #Ende
}
}
#wenns Links nicht mehr weiter geht, geh rechts weiter
else { if ($zzahl >= $$knoten{'zahl'}) {
if(defined($knoten->{'rechtsweg'}))
{
$knoten =$$knoten{'rechtsweg'};
}
else {
$$knoten{'rechtsweg'} = knot($zzahl);
$knoten = $ref_wurzel;
last;
}
}
else {
$ref_wurzel= knot($zzahl);
$knoten = $ref_wurzel;}
}
}
}
return $ref_wurzel;
}
ich weiß schon irgendwo ist da ein fehler mit der übergabe der Zahlen..aber ich finds nicht. außerdem hab ich sie jetzt umgeschrieben:
Die Klasse Neu hab ich doch schon:
sub new {
my $x = shift;
my $class = ref($x) || $x;
my @liste = @_;
my $ref_wurzel = newtree(\@liste);
my $self = {
wurzel => $ref_wurzel,
list => \@liste
};
bless ($self, $class);
return $self;
}