Leser: 22
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
#!/usr/bin/perl use strict; use warnings; my %database = ( 'TEST' => [ "Testdorf", 12345, "Testweg 99" ], 'test' => [ "Teststadt", 54321, "Teststrasse 9" ], ); sub Eingabe_Holen { my $eingabe = <STDIN>; chomp($eingabe); return if length($eingabe) == 0; return $eingabe; } sub say { print @_,"\n"; } while (1) { say " (1) Abfrage (2) Erfassung (X) Ende"; print "Auswahl: "; my $eingabe = Eingabe_Holen(); last if length($eingabe) == 0 or uc($eingabe) eq 'X'; Abfrage() if $eingabe =~ /^1/; Erfassung() if $eingabe =~ /^2/; } sub Abfrage { print "Namen eingeben (* um alle abzufragen): "; my $wert = Eingabe_Holen(); say "Datensatz wird gesucht...", "\n"; if ($wert eq "*") { do { say "------", join "\n", "", @{$database{$_}}, "------"; } for keys %database; } elsif (exists $database{$wert}) { say "Datensatz: ", join "\n",@{$database{$wert}}; } else { say "Datensatz nicht gefunden!" } } sub Erfassung {}
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
#!usr/bin/perl # STDIN, STDOUT, Hashes Adresse use strict; use utf8; binmode(STDOUT , ":encoding(cp850)" ); binmode(STDIN , ":encoding(cp850)" ); my %Datenbank = ( 'Hubert' => ["Hans Hubert, Hubertusstr. 11, Huberstadt, Tel: 0684-65293"], 'Stein' => ["Gero Stein, Steinstr. 1, Steinfeld, Tel: 01234-567"], 'Baum' => ["Lana Baum, Baumallee 9, Eichenhausen, Tel: 23456-789"], 'Halm' => ["Rike Halm, Grüner Weg 72, Bonnstadt, Tel: 0228-33333"], 'Garten' => ["Eric Garten, Gartengasse 203, Gartenheim, Tel:09123-12345"], 'Wolle' => ["Leila Wolle, Schafpfad 2, Mähdorf, 0123-456"] ); my @Auswahl; print "\nBitte geben sie den Nachnamen der gewünschten Adresse ein:\n"; while (my $Eingabe = <STDIN>) { chomp ($Eingabe); if ( $Eingabe eq "alle Adressen") {foreach my $key (sort keys %Datenbank) { print "keys %hash\n"; } } if (exists $Datenbank{$Eingabe} ) { push (@Auswahl, $Eingabe); print "Sie haben folgende Adresse ausgewählt:@Auswahl\n"; } else { print "Ihr gewünschte Adresse befindet sich leider nicht in der Liste\n"; }
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
# Hash deklarieren
my %hash = ();
# Einen Akalar einfüllen
my $skalar = 'test';
$hash{'scalar'} = $skalar;
# Eine Liste in einem Hash geht nur als Referenz (siehe dazu [url=http://perldoc.perl.org/perlreftut.html]perlreftut[/url], wirklich *sehr* lesenswert).
my @array = (1, 2, 'test');
my $array_ref = \@array;
$hash{'list'} = $array_ref;
# geht auch direkt:
$hash{'list'} = \@array;
# oder:
$hash{'list'} = [1, 2, 'test'];
Zugriff auf die ganze Liste:
my $array_ref = $hash{'list'};
print $array_ref->[0]; # erstes Element ausgeben
# Zugriff als Array: mit @{$skalar} *dereferenzieren*
my @array = @{$hash{'list'}};
print $array[0]; # erstes Element ausgeben
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
#!usr/bin/perl # STDIN, STDOUT, Hashes Adresse use strict; use utf8; binmode(STDOUT , ":encoding(cp850)" ); binmode(STDIN , ":encoding(cp850)" ); my %Datenbank = ( 'Hubert' => ["Hans Hubert, Hubertusstr. 11, Huberstadt, Tel: 0684-65293"], 'Stein' => ["Gero Stein, Steinstr. 1, Steinfeld, Tel: 01234-567"], 'Baum' => ["Lana Baum, Baumallee 9, Eichenhausen, Tel: 23456-789"], 'Halm' => ["Rike Halm, Grüner Weg 72, Bonnstadt, Tel: 0228-33333"], 'Garten' => ["Eric Garten, Gartengasse 203, Gartenheim, Tel:09123-12345"], 'Wolle' => ["Leila Wolle, Schafpfad 2, Mähdorf, 0123-456"] ); print "\nBitte geben sie den Nachnamen der gewünschten Adresse ein:\n"; while (my $Eingabe = <STDIN>) { chomp ($Eingabe); if ( $Eingabe eq "alle Adressen") { foreach my $key (sort keys %Datenbank) { print $Datenbank{$key}->[0],"\n"; # Adresse ausgeben } } elsif ( $Eingabe ne "" ) { if ( exists $Datenbank{$Eingabe} ) { print "Sie haben folgende Adresse ausgewählt: $Eingabe\n"; print $Datenbank{$Eingabe}->[0],"\n"; # Adresse ausgeben } else { print "Ihre gewünschte Adresse befindet sich leider nicht in der Liste\n"; print "Bitte Daten eingeben: "; my $Daten = <STDIN>; chomp ($Daten); if ( $Daten ne "" ) { $Datenbank{$Eingabe}->[0] = $Daten; print "Ihre neue Adresse wird in die Liste eingefügt\n"; } } } }