Leser: 31
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
## Unterprogramme sub namenladen { open (ADRESSEN, "<", "adressen.txt") while (my $adressen = <ADRESSEN>) { my @adressen = split ("\t" $adressen); @adressen = keys(%adressen); } sub namensuchen { my ($str1, $str2) = @_; if (exists($name{$eingabe})) { return 1; } else { print "$str1 und $str2 sind verschieden!\n"; return 0; } } ##Hauptprogramm namenladen(); print "Geben Sie eine 1 ein, wenn Sie einen Namen suchen möchten und eine 2 um das Programm zu beenden!"; $name = <>; chomp $name; if ($name == 2) { print "Sie haben das Programm beendet!\n "; } elsif ($name == 1) { print "Bitte geben Sie den Namen ein, den Sie suchen möchten!\n"; $eingabe = <>; chomp ($eingabe) while (namensuchen($name, $eingabe)) { print "Der Name existiert nicht. Bitte geben Sie einen anderen Namen ein! "; $eingabe = <>; chomp ($eingabe); } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
use strict; use warnings; my $addresses = namenladen('adressen.txt'); # edit # reagieren, wenn datei nicht geöffnet werden konnte die "Konnte adressen.txt nicht öffnen: $!" unless $addresses; print $addresses->{"larry wall"}, "\n"; sub namenladen { my ($filename) = @_; my %hash; # modernes open mit $fh statt bareword-filehandle open my $fh, '<', $filename or return; while (my $line = <$fh>) { chomp $line; # split bekommt eine *regex* als erstes argument, keinen string! # geht davon aus, dass es nur ein tab pro zeile gibt my ($name, $address) = split /\t/, $line; $hash{ $name } = $address; } return \%hash; }
Guest Juliehaben übrigens gar kein buch, sondern nur die folien des Prof...von wann die sind, möchte ich gar nicht wissen...
2009-07-08T10:15:59 tonewheel@pq: Nachdem ich den Beispielcode gesehen habe, ist mir klar, was Du meinst, mein Buch taugt wirklich nichts. :-) Frage; muss nicht $adresses ganz oben auch ein hash sein, also %adresses?
2009-07-07T11:02:24 pq[...]
an meiner uni haben die profs damals perl sogar komplett ignoriert, die profs vom ganzen fachbereich sind wohl im glauben, das benutzt man heute einfach nicht mehr...
2009-07-09T05:24:22 murphyMöglich wäre ja auch, dass sie wie ich der Meinung sind, Perl sei als Sprache für einen ersten Programmierkurs denkbar ungeeignet.
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
#!/usr/bin/perl
use strict;
use warnings;
main('adressbuch.txt');
exit;
sub main {
my ($adressdatei) = @_;
# adressdatei einlesen
my $adressen = adressdatei_einlesen($adressdatei);
# Benutzer begrüßen, Auswahlmenue
start_gruss();
auswahlmenue($adressen);
} # sub main
sub adressdatei_einlesen {
my ($adressdatei) = @_;
# ...
} # sub adressdatei_einlesen
sub start_gruss {
# ...
} # sub start_gruss
sub auswahlmenue {
my ($adressen) = @_;
while (1) {
# Auswahl ausgeben: 1) Suchen, 2) Beenden
# ...
# Benutzerwahl abfragen
# ...
# Abhängig von der Benutzerwahl reagieren
# ...
}
} # sub auswahlmenue
Guest JulieHey,
danke für eure nette Unterstützung und Hilfe!!! Ich habs irgendwie hinbekommen und bin zur Klausur zugelassen:)