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
#!/usr/bin/perl use warnings; use strict; my @fields = qw(Nachname Vorname Alter Hobbies); my $data = <<'END_HERE_1'; Müller;Jens;42;Fußball, Tennis, Vögel beobachten Knusper;Ronny;34;lesen, schlafen, langweilen END_HERE_1 my @data = split(/\n/, $data); sub getHashFromRecord { my $record = shift; my %h; my $i; my @s = split(/;/, $record); if ($#s != $#fields) { die "Wrong number of fields in record $record.\n"; } foreach $i (0 .. $#fields) { $h{$fields[$i]} = $s[$i]; } return %h; } my %h; my $i; my $record; print "Suchanfrage: "; my $q = <STDIN>; chomp($q); foreach $record (@data) { %h = getHashFromRecord($record); if ($h{Nachname} eq $q) { print "\n"; foreach $i (@fields) { print "$i:\t$h{$i}\n"; } print "\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 26 27
use strict; use warnings; use Data::Dumper; # definiere Feldnamen my @felder = qw(name vname alter hobbies); # hier kommts Ergebnis drauf my @slice = (); # datei lesen while(my $rec = <DATA>){ chomp $rec; my %hunt = (); @hunt{@felder} = split ";", $rec; # hash-slice! # hier könnte die Suchbedingung # Anwendung finden push @slice, \%hunt; } print Dumper \@slice; __DATA__ Müller;Jens;42;Fußball, Tennis, Vögel beobachten Knusper;Ronny;34;lesen, schlafen, langweilen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$VAR1 = [
{
'alter' => '42',
'name' => 'Müller',
'hobbies' => 'Fußball, Tennis, Vögel beobachten',
'vname' => 'Jens'
},
{
'alter' => '34',
'name' => 'Knusper',
'hobbies' => 'lesen, schlafen, langweilen',
'vname' => 'Ronny'
}
];