⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 perldsc.pod

📁 视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.
💻 POD
📖 第 1 页 / 共 2 页
字号:
     $HoA{$who} = [ @fields ]; } # calling a function that returns a list for $group ( "simpsons", "jetsons", "flintstones" ) {     $HoA{$group} = [ get_family($group) ]; } # likewise, but using temps for $group ( "simpsons", "jetsons", "flintstones" ) {     @members = get_family($group);     $HoA{$group} = [ @members ]; } # append new members to an existing family push @{ $HoA{"flintstones"} }, "wilma", "betty";=head2 Access and Printing of a HASH OF ARRAYS # one element $HoA{flintstones}[0] = "Fred"; # another element $HoA{simpsons}[1] =~ s/(\w)/\u$1/; # print the whole thing foreach $family ( keys %HoA ) {     print "$family: @{ $HoA{$family} }\n" } # print the whole thing with indices foreach $family ( keys %HoA ) {     print "family: ";     foreach $i ( 0 .. $#{ $HoA{$family} } ) {         print " $i = $HoA{$family}[$i]";     }     print "\n"; } # print the whole thing sorted by number of members foreach $family ( sort { @{$HoA{$b}} <=> @{$HoA{$a}} } keys %HoA ) {     print "$family: @{ $HoA{$family} }\n" } # print the whole thing sorted by number of members and name foreach $family ( sort {			    @{$HoA{$b}} <=> @{$HoA{$a}}					||				    $a cmp $b	    } keys %HoA ) {     print "$family: ", join(", ", sort @{ $HoA{$family} }), "\n"; }=head1 ARRAYS OF HASHESX<array of hashes> X<AoH>=head2 Declaration of an ARRAY OF HASHES @AoH = (        {            Lead     => "fred",            Friend   => "barney",        },        {            Lead     => "george",            Wife     => "jane",            Son      => "elroy",        },        {            Lead     => "homer",            Wife     => "marge",            Son      => "bart",        }  );=head2 Generation of an ARRAY OF HASHES # reading from file # format: LEAD=fred FRIEND=barney while ( <> ) {     $rec = {};     for $field ( split ) {         ($key, $value) = split /=/, $field;         $rec->{$key} = $value;     }     push @AoH, $rec; } # reading from file # format: LEAD=fred FRIEND=barney # no temp while ( <> ) {     push @AoH, { split /[\s+=]/ }; } # calling a function  that returns a key/value pair list, like # "lead","fred","daughter","pebbles" while ( %fields = getnextpairset() ) {     push @AoH, { %fields }; } # likewise, but using no temp vars while (<>) {     push @AoH, { parsepairs($_) }; } # add key/value to an element $AoH[0]{pet} = "dino"; $AoH[2]{pet} = "santa's little helper";=head2 Access and Printing of an ARRAY OF HASHES # one element $AoH[0]{lead} = "fred"; # another element $AoH[1]{lead} =~ s/(\w)/\u$1/; # print the whole thing with refs for $href ( @AoH ) {     print "{ ";     for $role ( keys %$href ) {         print "$role=$href->{$role} ";     }     print "}\n"; } # print the whole thing with indices for $i ( 0 .. $#AoH ) {     print "$i is { ";     for $role ( keys %{ $AoH[$i] } ) {         print "$role=$AoH[$i]{$role} ";     }     print "}\n"; } # print the whole thing one at a time for $i ( 0 .. $#AoH ) {     for $role ( keys %{ $AoH[$i] } ) {         print "elt $i $role is $AoH[$i]{$role}\n";     } }=head1 HASHES OF HASHESX<hass of hashes> X<HoH>=head2 Declaration of a HASH OF HASHES %HoH = (        flintstones => {		lead      => "fred",		pal       => "barney",        },        jetsons     => {		lead      => "george",		wife      => "jane",		"his boy" => "elroy",        },        simpsons    => {		lead      => "homer",		wife      => "marge",		kid       => "bart",	}, );=head2 Generation of a HASH OF HASHES # reading from file # flintstones: lead=fred pal=barney wife=wilma pet=dino while ( <> ) {     next unless s/^(.*?):\s*//;     $who = $1;     for $field ( split ) {         ($key, $value) = split /=/, $field;         $HoH{$who}{$key} = $value;     } # reading from file; more temps while ( <> ) {     next unless s/^(.*?):\s*//;     $who = $1;     $rec = {};     $HoH{$who} = $rec;     for $field ( split ) {         ($key, $value) = split /=/, $field;         $rec->{$key} = $value;     } } # calling a function  that returns a key,value hash for $group ( "simpsons", "jetsons", "flintstones" ) {     $HoH{$group} = { get_family($group) }; } # likewise, but using temps for $group ( "simpsons", "jetsons", "flintstones" ) {     %members = get_family($group);     $HoH{$group} = { %members }; } # append new members to an existing family %new_folks = (     wife => "wilma",     pet  => "dino", ); for $what (keys %new_folks) {     $HoH{flintstones}{$what} = $new_folks{$what}; }=head2 Access and Printing of a HASH OF HASHES # one element $HoH{flintstones}{wife} = "wilma"; # another element $HoH{simpsons}{lead} =~ s/(\w)/\u$1/; # print the whole thing foreach $family ( keys %HoH ) {     print "$family: { ";     for $role ( keys %{ $HoH{$family} } ) {         print "$role=$HoH{$family}{$role} ";     }     print "}\n"; } # print the whole thing  somewhat sorted foreach $family ( sort keys %HoH ) {     print "$family: { ";     for $role ( sort keys %{ $HoH{$family} } ) {         print "$role=$HoH{$family}{$role} ";     }     print "}\n"; } # print the whole thing sorted by number of members foreach $family ( sort { keys %{$HoH{$b}} <=> keys %{$HoH{$a}} } keys %HoH ) {     print "$family: { ";     for $role ( sort keys %{ $HoH{$family} } ) {         print "$role=$HoH{$family}{$role} ";     }     print "}\n"; } # establish a sort order (rank) for each role $i = 0; for ( qw(lead wife son daughter pal pet) ) { $rank{$_} = ++$i } # now print the whole thing sorted by number of members foreach $family ( sort { keys %{ $HoH{$b} } <=> keys %{ $HoH{$a} } } keys %HoH ) {     print "$family: { ";     # and print these according to rank order     for $role ( sort { $rank{$a} <=> $rank{$b} }  keys %{ $HoH{$family} } ) {         print "$role=$HoH{$family}{$role} ";     }     print "}\n"; }=head1 MORE ELABORATE RECORDSX<record> X<structure> X<struct>=head2 Declaration of MORE ELABORATE RECORDSHere's a sample showing how to create and use a record whose fields are ofmany different sorts:     $rec = {	 TEXT      => $string,	 SEQUENCE  => [ @old_values ],	 LOOKUP    => { %some_table },	 THATCODE  => \&some_function,	 THISCODE  => sub { $_[0] ** $_[1] },	 HANDLE    => \*STDOUT,     };     print $rec->{TEXT};     print $rec->{SEQUENCE}[0];     $last = pop @ { $rec->{SEQUENCE} };     print $rec->{LOOKUP}{"key"};     ($first_k, $first_v) = each %{ $rec->{LOOKUP} };     $answer = $rec->{THATCODE}->($arg);     $answer = $rec->{THISCODE}->($arg1, $arg2);     # careful of extra block braces on fh ref     print { $rec->{HANDLE} } "a string\n";     use FileHandle;     $rec->{HANDLE}->autoflush(1);     $rec->{HANDLE}->print(" a string\n");=head2 Declaration of a HASH OF COMPLEX RECORDS     %TV = (        flintstones => {            series   => "flintstones",            nights   => [ qw(monday thursday friday) ],            members  => [                { name => "fred",    role => "lead", age  => 36, },                { name => "wilma",   role => "wife", age  => 31, },                { name => "pebbles", role => "kid",  age  =>  4, },            ],        },        jetsons     => {            series   => "jetsons",            nights   => [ qw(wednesday saturday) ],            members  => [                { name => "george",  role => "lead", age  => 41, },                { name => "jane",    role => "wife", age  => 39, },                { name => "elroy",   role => "kid",  age  =>  9, },            ],         },        simpsons    => {            series   => "simpsons",            nights   => [ qw(monday) ],            members  => [                { name => "homer", role => "lead", age  => 34, },                { name => "marge", role => "wife", age => 37, },                { name => "bart",  role => "kid",  age  =>  11, },            ],         },      );=head2 Generation of a HASH OF COMPLEX RECORDS     # reading from file     # this is most easily done by having the file itself be     # in the raw data format as shown above.  perl is happy     # to parse complex data structures if declared as data, so     # sometimes it's easiest to do that     # here's a piece by piece build up     $rec = {};     $rec->{series} = "flintstones";     $rec->{nights} = [ find_days() ];     @members = ();     # assume this file in field=value syntax     while (<>) {         %fields = split /[\s=]+/;         push @members, { %fields };     }     $rec->{members} = [ @members ];     # now remember the whole thing     $TV{ $rec->{series} } = $rec;     ###########################################################     # now, you might want to make interesting extra fields that     # include pointers back into the same data structure so if     # change one piece, it changes everywhere, like for example     # if you wanted a {kids} field that was a reference     # to an array of the kids' records without having duplicate     # records and thus update problems.     ###########################################################     foreach $family (keys %TV) {         $rec = $TV{$family}; # temp pointer         @kids = ();         for $person ( @{ $rec->{members} } ) {             if ($person->{role} =~ /kid|son|daughter/) {                 push @kids, $person;             }         }         # REMEMBER: $rec and $TV{$family} point to same data!!         $rec->{kids} = [ @kids ];     }     # you copied the array, but the array itself contains pointers     # to uncopied objects. this means that if you make bart get     # older via     $TV{simpsons}{kids}[0]{age}++;     # then this would also change in     print $TV{simpsons}{members}[2]{age};     # because $TV{simpsons}{kids}[0] and $TV{simpsons}{members}[2]     # both point to the same underlying anonymous hash table     # print the whole thing     foreach $family ( keys %TV ) {         print "the $family";         print " is on during @{ $TV{$family}{nights} }\n";         print "its members are:\n";         for $who ( @{ $TV{$family}{members} } ) {             print " $who->{name} ($who->{role}), age $who->{age}\n";         }         print "it turns out that $TV{$family}{lead} has ";         print scalar ( @{ $TV{$family}{kids} } ), " kids named ";         print join (", ", map { $_->{name} } @{ $TV{$family}{kids} } );         print "\n";     }=head1 Database TiesYou cannot easily tie a multilevel data structure (such as a hash ofhashes) to a dbm file.  The first problem is that all but GDBM andBerkeley DB have size limitations, but beyond that, you also have problemswith how references are to be represented on disk.  One experimentalmodule that does partially attempt to address this need is the MLDBMmodule.  Check your nearest CPAN site as described in L<perlmodlib> forsource code to MLDBM.=head1 SEE ALSOperlref(1), perllol(1), perldata(1), perlobj(1)=head1 AUTHORTom Christiansen <F<tchrist@perl.com>>Last update:Wed Oct 23 04:57:50 MET DST 1996

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -