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

ASDS
 2007-04-17 17:15
#75872 #75872
User since
2007-01-29
115 Artikel
BenutzerIn
[default_avatar]
uff...
Mein .pm lautet: baum.pm und enthält folngenden Code
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
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
use strict;
use warnings;



sub knot { return ( { 'zahl' => shift,
'linksweg' => undef,
'rechtsweg' => undef } );
}

sub newtree {
######################
# Erstellen des Trees

my $ref_liste1 = shift;
my $zahl = undef;

my $ref_wurzel = undef;

for my $zzahl (@$ref_liste1){
my $refvalue = $ref_wurzel;

if ($zahl)
{ while (1) {
############################
#Beginn des Vergleichs

if($zzahl < $$refvalue{'zahl'}) {
if(defined($$refvalue{'linksweg'}))
{
$refvalue = $$refvalue{'linksweg'};
}
else {
$$refvalue{'linksweg'} = knot($zzahl);
$zahl = $ref_wurzel;
last; #Ende
}
}
#######
#wenns Links nicht mehr weiter geht, geh rechts weiter

else { if ($zzahl > $$$refvalue {'zahl'}) {

if(defined($$refvalue{'rechtsweg'}))
{$refvalue = $$refvalue{'rechtsweg'};

}
else {
$$refvalue{'rechtsweg'} = knot($zzahl);
last;
}
}
}
}

}
return($ref_wurzel);
}



########
#Hauptprogramm
########

###################
#Ausgabe des Trees
####

sub ausgabe {
my $self = shift;
my $refvalue = shift;

if(defined($self->{'ref_wurzel'}->{'linksweg'})) {
ausgabe($$refvalue{'linksweg'})
}

print "$self->{'ref_wurzel'}->{'zahl'}\n";

if(defined($self->{'ref_wurzel'}->{'rechtsweg'})) {
ausgabe($$refvalue{'rechtsweg'})
}
}
ausgabe($ref_wurzel);


sub Neu {
my $class = shift;
my $self = {};
bless( $self, $class );

my @liste = @_;
$self->{'ref_wurzel'} = newtree (\@liste);
return $self;
}
###############
#Hinzufügen weiterer Äste
###############
sub hinzufuegen {
my $self = shift;
my @newList = @_;
if (defined($self->{ref_wurzel})){
my $list = $self->{ref_liste1};
foreach my $zzahl (@newList)
{ push(@$list, $zzahl); };
$self->{ref_wurzel} = newtree ($list);

}
}

}

1;


mein .pl lautet: MainBaum.pl und das hab ich so geschrieben:
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
use baum;
use strict;

my @liste1 = ();
my @liste2 = (4, 28, 9, 100, 12, 84, 10, 11);
my @HinzufuegenListe = ();
my @NeuListe = ();
my $ebaum = undef;

############################
#Eingabe der ersten 10 Zahlen / Liste 1
############################

sub BaumNeu {
for(0..9){
print "Bitte geben Sie eine Zahlen ein: ";
my $eingabe = <STDIN>;
if ( $eingabe =~ /^\D*$/)
{
print "Ungültige Eingabe, bitte geben sie nur Zahlen ein \n";
chomp($eingabe);
push @liste1,$eingabe;
}}
print "Sie haben folgende Zahlen eingegeben: (@liste1) \n";

$ebaum =baum->Neu(@liste1);

}
sub Hinzufuegen {
{my $zzahl = @_; }
$ebaum =baum->hinzufuegen(my @NeueListe);
}

sub Ausgabe {
$ebaum =baum->ausgabe(@HinzufuegenListe);}

BaumNeu;
Hinzufuegen;
Ausgabe;


an einer () nach BaumNeu kanns nicht liegen, oder? Wie gesagt, er kommt meiner Meinung ja nichts ins .pm und dort in die Methode NEU hinein, obowhl meiner Meinung nach der Pfad passt.

View full thread eine Frage zu objektorientertem Perl