+-----------+ +-----------+ | O-----+----->| 12345 | +-----------+ +-----------+ #### +----------\ +----------\ | a > | b > +----------/ +----------/ | | +-----------+ +-----------+ | O-----+----->| 12345 | +-----------+ +-----------+ #### +----------\ | b > +----------\ +----------/ | a > | +----------/ +-----------+ | | O-----+----->+###########+ +-----------+ +"""""""""""+ | Foo | +----------\ +-----------+ | c > | Bar | +----------/ +-----------+ | | Baz | +-----------+ +-----------+ | O-----+----->| Qux | +-----------+ +-----------+ #### +----------\ | a > +-->+###########+ +----------/ | +"""""""""""+ | | | Foo | +-----------+ | +-----------+ | O-----+----->+###########+ | | Bar | +-----------+ +"""""""""""+ | +-----------+ | O-----+---+ +-----------+ | O-----+------>+###########+ +-----------+ +"""""""""""+ | O-----+---+ | Baz | +-----------+ | +-----------+ | | Qux | | +-----------+ | | +-->+###########+ +"""""""""""+ | Baz | +-----------+ #### +----------\ | a > +-->+###########+ +----------/ | +"""""""""""+ | | | Foo | +#########################+ | +-----------+ +"""""""""""""""""""""""""+ | | Bar | +-----------\ +-----------+ | +-----------+ | aaa >| O-----+---+ +-----------< +-----------+ | bbb >| O-----+------>+###########+ +-----------< +-----------+ +"""""""""""+ | ccc >| O-----+---+ | Baz | +-----------/ +-----------+ | +-----------+ | | Qux | | +-----------+ | | +-->+###########+ +"""""""""""+ | Baz | +-----------+ #### $aref = [123, 456, 789]; #### $href = {NAME => 'Bernd', EMAIL => 'bdulfer@sybase.com'}; #### $fref = sub { print "AnonSub\n" }; #### use Data::Dumper; sub make_hash_from_arrays { my ($aref1, $aref2) = @_; my %hash; $hash{$_} = shift @$aref2 foreach (@$aref1); print Dumper(\%hash); } my @a = ('a', 'b', 'c', 'd'); my @b = (1, 2, 3, 4); make_hash_from_arrays(\@a, \@b); #### $adresse{Bernd} = 'Bernd Dulfer|Kapellenstr. 1|bdulfer@sybase.com'; $email = (split(/\|/, $adresse{bernd}))[2]; #### $name{Bernd} = 'Bernd Dulfer'; $str{Bernd} = 'Kapellenstr. 1'; $email{Bernd} = 'bdulfer@sybase.com'; print_adresse($name{Bernd}, $str{Bernd}); #### +----------\ | adresse > +----------/ | +#######################+ +"""""""""""""""""""""""+ +-----------\ +---------+ | Bernd >| O----+----->+##################################+ +-----------/ +---------+ +""""""""""""""""""""""""""""""""""+ +-----------\ +--------------------+ | Name >| Bernd Dulfer | +-----------< +--------------------+ | Str >| Kapellenstr. 1 | +-----------< +--------------------+ | EMail >| bdulfer@sybase.com| +-----------/ +--------------------+ $adresse{Bernd} = { Name => 'Bernd Dulfer', Str => 'Kapellenstr. 1', EMail => 'bdulfer@sybase.com' }; $email = $adresse{Bernd}->{EMail}; print_adresse($adresse{Bernd}); #### +----------\ | adresse > +----------/ | +##########+ +""""""""""+ +----\ +---+ |Bernd>| O-+->+###########################+ +----/ +---+ +"""""""""""""""""""""""""""+ +------\ +------------------+ |Name >|Bernd Dulfer | +------< +------------------+ |Str >|Kapellenstr. 1 | +------< +------------------+ |EMail >|bdulfer@sybase.com| +------< +------------------+ |Buecher>| O---------+->+#####################+ +------/ +------------------+ +"""""""""""""""""""""+ |Der Herr der Ringe | +---------------------+ |Per Anhalter durch...| +---------------------+ |Die Farben der Magie | +---------------------+ $adresse{Bernd} = { Name => 'Bernd Dulfer', Str => 'Kapellenstr. 1', EMail => 'bdulfer@sybase.com', Buecher => [ 'Der Herr der Ringe', 'Per Anhalter durch die Galaxie', 'Die Farben der Magie' ] }; #### $s = 'qwertz'; $sref = \$s; print ${$sref}, "\n"; print $$sref, "\n"; #### qwertz qwertz #### $, = ':'; @a = (123, 456, 789); $aref = \@a; print @{$aref}, "\n"; print @$aref, "\n"; #### 123:456:789 123:456:789 #### ${$aref}[1] oder $$aref[1] #### $adresse{Bernd} = { Name => 'Bernd Dulfer', Str => 'Kapellenstr. 1', EMail => 'bdulfer@sybase.com', Buecher => [ 'Der Herr der Ringe', 'Per Anhalter durch die Galaxie', 'Die Farben der Magie' ] }; print 'Name: ', $adresse{Bernd}->{Name}, "\n"; #### Name: Bernd Dulfer #### $adresse{Bernd}->{Buecher}->[3] = 'Goedel, Escher, Bach - Ein endlos geflochtenes Band'; #### push @{$adresse{Bernd}->{Buecher}}, 'Die Eissegler von Tran-ky-ky'; #### %autoren = ( Tolkien => [ 'Das Silmarillion', 'Nachrichten aus Mittelerde' ], Pratchett => [; 'Wachen, Wachen!', 'Tönerne Füße' ] ) #### $adresse{Bernd}->{Autoren} = \%autoren; #### push @{$autoren{Tolkien}}, 'Der Kleine Hobbit'; #### #!/usr/bin/perl use strict; use warnings; use Data::Dumper; my %adresse; $adresse{Bernd} = { Name => 'Bernd Dulfer', Str => 'Kapellenstr. 1', EMail => 'bdulfer@sybase.com', Buecher => [ 'Der Herr der Ringe', 'Per Anhalter durch die Galaxie', 'Die Farben der Magie' ] }; $adresse{Bernd}->{Buecher}->[3] = 'Gödel, Escher, Bach - Ein endlos geflochtenes Band'; push @{$adresse{Bernd}->{Buecher}}, 'Die Eissegler von Tran-ky-ky'; $adresse{Bernd}->{Autoren}->{Tolkien} = ['Silmarillion', 'Unfinished Tales']; print Dumper(\%adresse); #### $VAR1 = { 'Bernd' => { 'Autoren' => { 'Tolkien' => [ 'Silmarillion', 'Unfinished Tales' ] }, 'Buecher' => [ 'Der Herr der Ringe', 'Per Anhalter durch die Galaxie', 'Die Farben der Magie', 'Gödel, Escher, Bach - Ein endlos geflochtenes Band', 'Die Eissegler von Tran-ky-ky' ], 'EMail' => 'bdulfer@sybase.com', 'Str' => 'Kapellenstr. 1', 'Name' => 'Bernd Dulfer' } }; #### #Kürzel Name Str EMail Buecher Bernd |Bernd Dulfer |Kapellenstr. 1 |bdulfer@sybase.com |(Der Herr der Ringe|Per Anhalter ...|Die Farben der Magie) Bilbo |Bilbo Beutlin |Beutelsend | |(Das Rote Buch des Hobbits) #### 1: my %adressen; 2: 3: open ADRESSEN, 'adressen.dat' or die "Konnte Datei adressen.dat nicht öffnen: $!\n"; 4: while () { 5: next if /^#/; 6: my ($kuerzel, $name, $str, $email, $buecher) = split(/\s*\|/, $_, 5); 7: $adressen{$kuerzel} = { 8: Name => $name, 9: Str => $str, 10: EMail => $email 11: }; 12: $buecher =~ tr/()//d; 13: push @{$adressen{$kuerzel}->{Buecher}}, split /\|/, $buecher; 14: } 15: close ADRESSEN; #### foreach (@{$adresse{Bernd}->{Buecher}}) { print $_, "\n"; } #### foreach (keys %{$adresse{Bernd}->{Autoren}}) { print $_, "\n"; foreach (@{$adresse{Bernd}->{Autoren}->{$_}}) { print "\t", $_, "\n"; } } #### Package Mod; my $callback; sub set_callback { $callback = shift; } sub do_something { do_this(); do_that(); &$callback; do_something_else(); } . . . 1; __END__ #!/usr/bin/perl use strict; use warnings; use Mod; Mod::set_callback(\&print_rubbish); Mod::do_something(); sub print_rubbish ( print "Rubbish!\n"; } #### %dispatch = ( insert => \&insert, update => \&update, delete => \&delete ) $dispatch{$token}->($query);