+-----------+ +-----------+ | 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); #### $address{Bernd} = 'Bernd Dulfer|Kapellenstr. 1|bdulfer@sybase.com'; $email = (split(/\|/, $address{bernd}))[2]; #### $name{Bernd} = 'Bernd Dulfer'; $str{Bernd} = 'Kapellenstr. 1'; $email{Bernd} = 'bdulfer@sybase.com'; print_address($name{Bernd}, $str{Bernd}); #### +----------\ | address > +----------/ | +#######################+ +"""""""""""""""""""""""+ +-----------\ +---------+ | Bernd >| O----+----->+##################################+ +-----------/ +---------+ +""""""""""""""""""""""""""""""""""+ +-----------\ +--------------------+ | Name >| Bernd Dulfer | +-----------< +--------------------+ | Str >| Kapellenstr. 1 | +-----------< +--------------------+ | EMail >| bdulfer@sybase.com| +-----------/ +--------------------+ $address{Bernd} = { Name => 'Bernd Dulfer', Str => 'Kapellenstr. 1', EMail => 'bdulfer@sybase.com' }; $email = $address{Bernd}->{EMail}; print_address($address{Bernd}); #### +----------\ | address > +----------/ | +##########+ +""""""""""+ +----\ +---+ |Bernd>| O-+->+###########################+ +----/ +---+ +"""""""""""""""""""""""""""+ +------\ +------------------+ |Name >|Bernd Dulfer | +------< +------------------+ |Str >|Kapellenstr. 1 | +------< +------------------+ |EMail >|bdulfer@sybase.com| +------< +------------------+ |Books >| O---------+->+#####################+ +------/ +------------------+ +"""""""""""""""""""""+ |Lord of the Rings | +---------------------+ |Hitchhikers Guide ...| +---------------------+ |The Color of Magic | +---------------------+ $address{Bernd} = { Name => 'Bernd Dulfer', Str => 'Kapellenstr. 1', EMail => 'bdulfer@sybase.com', Books => [ 'Lord of the Rings', 'Hitchhikers Guide to the Galaxy', 'The Color of Magic' ] }; #### $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] or $$aref[1] #### $address{Bernd} = { Name => 'Bernd Dulfer', Str => 'Kapellenstr. 1', EMail => 'bdulfer@sybase.com', Books => [ 'Lord of the Rings', 'Hitchhikers Guide to the Galaxy', 'The Color of Magic' ] }; print 'Name: ', $address{Bernd}->{Name}, "\n"; #### Name: Bernd Dulfer #### $address{Bernd}->{Books}->[3] = 'Goedel, Escher, Bach - An Eternal Golden Braid'; #### push @{$address{Bernd}->{Books}}, 'Icerigger'; #### %authors = ( Tolkien => [ 'The Silmarillion', 'Unfinished Tales' ], Pratchett => [; 'Guards! Guards!', 'Feet of Clay' ] ) #### $address{Bernd}->{Authors} = \%authors; #### push @{$authors{Tolkien}}, 'The Hobbit'; #### #!/usr/bin/perl use strict; use warnings; use Data::Dumper; my %address; $address{Bernd} = { Name => 'Bernd Dulfer', Str => 'Kapellenstr. 1', EMail => 'bdulfer@sybase.com', Books => [ 'Lord of the Rings', 'Hitchhikers Guide to the Galaxy', 'The Color of Magic' ] }; $address{Bernd}->{Books}->[3] = 'Goedel, Escher, Bach - An Eternal Golden Braid'; push @{$address{Bernd}->{Books}}, 'Icerigger'; $address{Bernd}->{Authors}->{Tolkien} = ['Silmarillion', 'Unfinished Tales']; print Dumper(\%address); #### $VAR1 = { 'Bernd' => { 'Authors' => { 'Tolkien' => [ 'Silmarillion', 'Unfinished Tales' ] }, 'Books' => [ 'Lord of the Rings', 'Hitchhikers Guide to the Galaxy', 'The Color of Magic' 'Gödel, Escher, Bach - An Eternal Golden Braid', 'Icerigger' ], 'EMail' => 'bdulfer@sybase.com', 'Str' => 'Kapellenstr. 1', 'Name' => 'Bernd Dulfer' } }; #### #Short Name Str EMail Books Bernd |Bernd Dulfer |Kapellenstr. 1 |bdulfer@sybase.com |(Lord of the Rings|Hitchhikers Guide ...|The Color of Magic) Bilbo |Bilbo Baggins |Bagend | |(The Red Book) #### 1: my %addresses; 2: 3: open ADDRESSES, 'addresses.dat' or die "Cannot open addresses.dat: $!\n"; 4: while () { 5: next if /^#/; 6: my ($short, $name, $str, $email, $books) = split(/\s*\|/, $_, 5); 7: $addresses{$short} = { 8: Name => $name, 9: Str => $str, 10: EMail => $email 11: }; 12: $books =~ tr/()//d; 13: push @{$addresses{$short}->{Books}}, split /\|/, $books; 14: } 15: close ADDRESSES; #### foreach (@{$address{Bernd}->{Books}}) { print $_, "\n"; } #### foreach (keys %{$address{Bernd}->{Authors}}) { print $_, "\n"; foreach (@{$address{Bernd}->{Authors}->{$_}}) { 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);