Address: http://man.chinacode.com/perl/perl9.htm
Title: PerlÖÐÎÄÊÖ²á  •  Size: 20972  •  Last Modified: Sun, 11 Jun 2006 06:54:10 GMT
¡¡

Perl 5½Ì³Ì
by chinacode

Ŀ¼

µÚÒ»²¿·Ö PerlÓïÑÔ

µÚÒ»Õ ¸ÅÊö

µÚ¶þÕ ¼òµ¥±äÁ¿

µÚÈýÕÂ ²Ù×÷·û

µÚËÄÕ ÁбíºÍÊý×é±äÁ¿

µÚÎåÕ Îļþ¶Áд

µÚÁùÕ ģʽƥÅä

µÚÆßÕ ¿ØÖƽṹ

µÚ°ËÕ ×Ó³ÌÐò

µÚ¾ÅÕ ¹ØÁªÊý×é(¹þÏ£±í)

µÚʮՠ¸ñʽ»¯Êä³ö

µÚʮһÕ Îļþϵͳ

µÚÊ®¶þÕÂ ÒýÓÃ(Ö¸Õë)

µÚÊ®ÈýÕÂ ÃæÏò¶ÔÏó±à³Ì

µÚÊ®ËÄÕ °üºÍÄ£¿é

¸½Â¼Ò» º¯Êý¼¯

µÚ¶þ²¿·Ö PerlµÄCGIÓ¦ÓÃ

µÚÒ»ÕÂ cgilibÀý

µÚ¶þÕ ¶¯Ì¬´´½¨Í¼Ïñ

µÚÈýÕ ¼ÆÊýÆ÷µÄ±àд·½·¨

µÚËÄÕÂ Web ServerÉèÖÃ

µÚÎåÕ¡¢...
¡¡

µÚ¾ÅÕ ¹ØÁªÊý×é/¹þÏ£±í

by chinacode

Ò»¡¢Êý×é±äÁ¿µÄÏÞÖÆ
¶þ¡¢¶¨Òå
Èý¡¢·ÃÎʹØÁªÊý×éµÄÔªËØ
ËÄ¡¢Ôö¼ÓÔªËØ
Îå¡¢´´½¨¹ØÁªÊý×é
Áù¡¢´ÓÊý×é±äÁ¿¸´ÖƵ½¹ØÁªÊý×é
Æß¡¢ÔªËصÄÔöɾ
°Ë¡¢ÁгöÊý×éµÄË÷ÒýºÍÖµ
¾Å¡¢ÓùØÁªÊý×éÑ­»·
Ê®¡¢ÓùØÁªÊý×é´´½¨Êý¾Ý½á¹¹
  1¡¢(µ¥)Á´±í
  2¡¢½á¹¹
  3¡¢Ê÷

Ò»¡¢Êý×é±äÁ¿µÄÏÞÖÆ
    ÔÚÇ°Ãæ½²µÄÊý×é±äÁ¿ÖУ¬¿ÉÒÔͨ¹ýϱê·ÃÎÊÆäÖеÄÔªËØ¡£ÀýÈ磬ÏÂÁÐÓï¾ä·ÃÎÊÊý×é@arrayµÄµÚÈý¸öÔªËØ£º
    $scalar = $array[2];
    ËäÈ»Êý×éºÜÓÐÓ㬵«ËüÃÇÓÐÒ»¸öÏÔÖøÈ±ÏÝ£¬¼´ºÜÄѼÇסÄĸöÔªËØ´æÖüµÄʲôÄÚÈÝ¡£¼ÙÈçÎÒÃÇÀ´Ð´Ò»¸ö³ÌÐò¼ÆËãijÎļþÖÐÊ××Öĸ´óдµÄµ¥´Ê³öÏֵĴÎÊý£¬ÓÃÊý×éÀ´ÊµÏ־ͱȽÏÀ§ÄÑ£¬³ÌÐò´úÂëÈçÏ£º
1 : #!/usr/local/bin/perl
2 :
3 : while ($inputline = <STDIN>) {
4 :   while ($inputline =~ /\b[A-Z]\S+/g) {
5 :     $word = $&;
6 :     $word =~ s/[;.,:-]$//; # remove punctuation
7 :     for ($count = 1; $count <= @wordlist;
8 :         $count++) {
9 :       $found = 0;
10:       if ($wordlist[$count-1] eq $word) {
11:         $found = 1;
12:         $wordcount[$count-1] += 1;
13:         last;
14:       }
15:     }
16:     if ($found == 0) {
17:       $oldlength = @wordlist;
18:       $wordlist[$oldlength] = $word;
19:       $wordcount[$oldlength] = 1;
20:     }
21:   }
22: }
23: print ("Capitalized words and number of occurrences:\n");
24: for ($count = 1; $count <= @wordlist; $count++) {
25:   print ("$wordlist[$count-1]: $wordcount[$count-1]\n");
26: }
    ÔËÐнá¹ûÈçÏ£º
Here is a line of Input.
This Input contains some Capitalized words.
^D
Capitalized words and number of occurrences:
Here: 1
Input: 2
This: 1
Capitalized: 1
    Õâ¸ö³ÌÐòÿ´Î´Ó±ê×¼ÊäÈëÎļþ¶ÁÒ»ÐÐÎÄ×Ö£¬µÚËÄÐÐÆðµÄÑ­»·Æ¥ÅäÿÐÐÖÐÊ××Öĸ´óдµÄµ¥´Ê£¬Ã¿ÕÒµ½Ò»¸öÑ­»·Ò»´Î£¬¸³¸ø¼òµ¥±äÁ¿$word¡£ÔÚµÚÁùÐÐÖÐÈ¥µô±êµãºó£¬²é¿´¸Ãµ¥´ÊÊÇ·ñÔø³öÏÖ¹ý£¬7~15ÐÐÖÐÔÚ@wordlistÖа¤¸öÔªËØ×ö´Ë¼ì²é£¬Èç¹ûij¸öÔªËØÓë$wordÏàµÈ£¬@wordcountÖÐÏàÓ¦µÄÔªËØ¾ÍÔö¼ÓÒ»¸öÊý¡£Èç¹ûûÓгöÏÖ¹ý£¬¼´@wordlistÖÐûÓÐÔªËØÓë$wordÏàµÈ£¬16~20Ðиø@wordlistºÍ@wordcountÔö¼ÓÒ»¸öÐÂÔªËØ¡£
¶þ¡¢¶¨Òå
    ÕýÈçÄãËù¿´µ½µÄ£¬Ê¹ÓÃÊý×éÔªËØ²úÉúÁËһЩÎÊÌâ¡£Ê×ÏÈ£¬@wordlistÖÐÄĸöÔªËØ¶ÔÓ¦×ÅÄĸöµ¥´Ê²¢²»Ã÷ÏÔ£»¸üÔãµÄÊÇ£¬Ã¿¶Á½øÒ»¸öе¥´Ê£¬³ÌÐò±ØÐë¼ì²éÕû¸öÁбí²ÅÄÜÖªµÀ¸Ãµ¥´ÊÊÇ·ñÔø¾­³öÏÖ¹ý£¬µ±Áбí±äµÃ½Ï´óʱ£¬ÕâÊǺܺķÑʱ¼äµÄ¡£
    ÕâЩÎÊÌâ²úÉúµÄÔ­ÒòÊÇÊý×éÔªËØÍ¨¹ýÊý×Öϱê·ÃÎÊ£¬ÎªÁ˽â¾öÕâÀàÎÊÌ⣬Perl¶¨ÒåÁËÁíÒ»ÖÖÊý×飬¿ÉÒÔÓÃÈÎÒâ¼òµ¥±äÁ¿ÖµÀ´·ÃÎÊÆäÔªËØ£¬ÕâÖÖÊý×é½Ð×ö¹ØÁªÊý×飬Ҳ½Ð¹þÏ£±í¡£
    ÎªÁËÇø·Ö¹ØÁªÊý×é±äÁ¿ÓëÆÕͨµÄÊý×é±äÁ¿£¬PerlʹÓÃ%×÷ΪÆäÊ××Ö·û£¬¶øÊý×é±äÁ¿ÒÔ@´òÍ·¡£ÓëÆäËü±äÁ¿ÃûÒ»Ñù£¬%ºóµÄµÚÒ»¸ö×Ö·û±ØÐëΪ×Öĸ£¬ºóÐø×Ö·û¿ÉÒÔΪ×Öĸ¡¢Êý×Ö»òÏ»®Ïß¡£
Èý¡¢·ÃÎʹØÁªÊý×éµÄÔªËØ
    ¹ØÁªÊý×éµÄϱê¿ÉÒÔΪÈκμòµ¥/±êÁ¿Öµ£¬·ÃÎʵ¥¸öÔªËØÊ±ÒÔ$·ûºÅ´òÍ·£¬Ï±êÓôóÀ¨ºÅΧÆðÀ´¡£ÀýÈ磺
$fruit{"bananas"}
$number{3.14159}
$integer{-7}
    ¼òµ¥±äÁ¿Ò²¿É×÷Ϊϱ꣬È磺
    $fruit{$my_fruit}
ËÄ¡¢Ôö¼ÓÔªËØ
    ´´½¨Ò»¸ö¹ØÁªÊý×éÔªËØ×î¼òµ¥µÄ·½·¨ÊǸ³Öµ£¬ÈçÓï¾ä$fruit{"bananas"} = 1£» °Ñ1¸³¸ø¹ØÁªÊý×é%fruitϱêΪbananasµÄÔªËØ£¬Èç¹û¸ÃÔªËØ²»´æÔÚ£¬Ôò±»´´½¨£¬Èç¹ûÊý×é%fruit´ÓδʹÓùý£¬Ò²±»´´½¨¡£
    ÕâÒ»ÌØÐÔʹµÃ¹ØÁªÊý×éºÜÈÝÒ×ÓÃÓÚ¼ÆÊý¡£ÏÂÃæÎÒÃÇÓùØÁªÊý×é¸ÄдÉÏÃæµÄ³ÌÐò£¬×¢ÒâʵÏÖͬÑùµÄ¹¦Äܴ˳ÌÐò¼ò»¯ÁËÐí¶à¡£
1 : #!/usr/local/bin/perl
2 :
3 : while ($inputline = ) {
4 :   while ($inputline =~ /\b[A-Z]\S+/g) {
5 :     $word = $&;
6 :     $word =~ s/[;.,:-]$//; # remove punctuation
7 :     $wordlist{$word} += 1;
8 :   }
9 : }
10: print ("Capitalized words and number of occurrences:\n");
11: foreach $capword (keys(%wordlist)) {
12:   print ("$capword: $wordlist{$capword}\n");
13: }
    ÔËÐнá¹ûÈçÏ£º
Here is a line of Input.
This Input contains some Capitalized words.
^D
Capitalized words and number of occurrences:
This: 1
Input: 2
Here: 1
Capitalized: 1
    Äã¿ÉÒÔ¿´µ½£¬Õâ´Î³ÌÐò¼òµ¥¶àÁË£¬¶ÁÈ¡ÊäÈë²¢´æÖü¸÷µ¥´ÊÊýÄ¿´Ó20ÐмõÉÙµ½ÁË7ÐС£
    ±¾³ÌÐòÓùØÁªÊý×é%wordlist¸ú×ÙÊ××Öĸ´óдµÄµ¥´Ê£¬Ï±ê¾ÍÓõ¥´Ê±¾Éí£¬ÔªËØÖµÎª¸Ãµ¥´Ê³öÏֵĴÎÊý¡£µÚ11ÐÐʹÓÃÁËÄÚǶº¯Êýkeys()¡£Õâ¸öº¯Êý·µ»Ø¹ØÁªÊý×éµÄϱêÁÐ±í£¬foreachÓï¾ä¾ÍÓôËÁбíÑ­»·¡£
    ×¢£º¹ØÁªÊý×é×ÜÊÇËæ»ú´æÖüµÄ£¬Òò´Ëµ±ÄãÓÃkeys()·ÃÎÊÆäËùÓÐÔªËØÊ±£¬²»±£Ö¤ÔªËØÒÔÈκÎ˳Ðò³öÏÖ£¬ÌرðÖµµÃÒ»ÌáµÄÊÇ£¬ËüÃDz»»áÒÔ±»´´½¨µÄ˳Ðò³öÏÖ¡£
    ÒªÏë¿ØÖÆ¹ØÁªÊý×éÔªËØ³öÏֵĴÎÐò£¬¿ÉÒÔÓÃsort()º¯Êý¶Ôkeys()·µ»ØÖµ½øÐÐÅÅÁУ¬È磺
foreach $capword (sort keys(%wordlist)) {
  print ("$capword: $wordlist{$capword}\n");
}
Îå¡¢´´½¨¹ØÁªÊý×é
    ¿ÉÒÔÓõ¥¸ö¸³ÖµÓï¾ä´´½¨¹ØÁªÊý×飬È磺
    %fruit = ("apples",17,"bananas",9,"oranges","none");
    ´ËÓï¾ä´´½¨µÄ¹ØÁªÊý×麬ÓÐÏÂÃæÈý¸öÔªËØ£º
  • ϱêΪapplesµÄÔªËØ£¬ÖµÎª17
  • ϱêΪbananasµÄÔªËØ£¬ÖµÎª9
  • ϱêΪorangesµÄÔªËØ£¬ÖµÎªnone
  •     ×¢£ºÓÃÁÐ±í¸ø¹ØÁªÊý×鸳ֵʱ£¬Perl5ÔÊÐíʹÓÃ"=>"»ò","À´·Ö¸ôϱêÓëÖµ£¬ÓÃ"=>"¿É¶ÁÐÔ¸üºÃЩ£¬ÉÏÃæÓï¾äµÈЧÓÚ£º
        %fruit = ("apples"=>17,"bananas"=>9,"oranges"=>"none");
    Áù¡¢´ÓÊý×é±äÁ¿¸´ÖƵ½¹ØÁªÊý×é
        ÓëÁбíÒ»Ñù£¬Ò²¿ÉÒÔͨ¹ýÊý×é±äÁ¿´´½¨¹ØÁªÊý×飬µ±È»£¬ÆäÔªËØÊýĿӦ¸ÃΪżÊý£¬È磺
        @fruit = ("apples",17,"bananas",9,"oranges","none");
        %fruit = @fruit;
        ·´Ö®£¬¿ÉÒ԰ѹØÁªÊý×鸳¸øÊý×é±äÁ¿£¬È磺
        %fruit = ("grapes",11,"lemons",27);
        @fruit = %fruit;
        ×¢Ò⣬´ËÓï¾äÖÐÔªËØ´ÎÐò䶨Ò壬ÄÇôÊý×é±äÁ¿@fruit¿ÉÄÜΪ("grapes",11,"lemons",27)»ò("lemons",27,"grapes",11)¡£
        ¹ØÁªÊý×é±äÁ¿Ö®¼ä¿ÉÒÔÖ±½Ó¸³Öµ£¬È磺%fruit2 = %fruit1; »¹¿ÉÒÔ°ÑÊý×é±äÁ¿Í¬Ê±¸³¸øÒ»Ð©¼òµ¥±äÁ¿ºÍÒ»¸ö¹ØÁªÊý×é±äÁ¿£¬È磺
        ($var1, $var2, %myarray) = @list;
        ´ËÓï¾ä°Ñ@listµÄµÚÒ»¸öÔªËØ¸³¸ø$var1£¬µÚ¶þ¸ö¸³¸ø$var2£¬ÆäÓàµÄ¸³¸ø%myarray¡£
        ×îºó£¬¹ØÁªÊý×é¿ÉÒÔͨ¹ý·µ»ØÖµÎªÁбíµÄÄÚǶº¯Êý»òÓû§¶¨ÒåµÄ×Ó³ÌÐòÀ´´´½¨£¬ÏÂÀýÖаÑsplit()º¯ÊýµÄ·µ»ØÖµ--Ò»¸öÁбí--¸³¸øÒ»¸ö¹ØÁªÊý×é±äÁ¿¡£
    1: #!/usr/local/bin/perl
    2:
    3: $inputline = <STDIN>;
    4: $inputline =~ s/^\s+|\s+\n$//g;
    5: %fruit = split(/\s+/, $inputline);
    6: print ("Number of bananas: $fruit{\"bananas\"}\n");
        ÔËÐнá¹ûÈçÏ£º
    oranges 5 apples 7 bananas 11 cherries 6
    Number of bananas: 11
    Æß¡¢ÔªËصÄÔöɾ
        Ôö¼ÓÔªËØÒѾ­½²¹ý£¬¿ÉÒÔͨ¹ý¸øÒ»¸öδ³öÏÖ¹ýµÄÔªËØ¸³ÖµÀ´Ïò¹ØÁªÊý×éÖÐÔö¼ÓÐÂÔªËØ£¬Èç$fruit{"lime"} = 1;´´½¨Ï±êΪlime¡¢ÖµÎª1µÄÐÂÔªËØ¡£
        É¾³ýÔªËØµÄ·½·¨ÊÇÓÃÄÚǶº¯Êýdelete£¬ÈçÓûɾ³ýÉÏÊöÔªËØ£¬Ôò£º
        delete ($fruit{"lime"});
    ×¢Ò⣺
    1¡¢Ò»¶¨ÒªÊ¹ÓÃdeleteº¯ÊýÀ´É¾³ý¹ØÁªÊý×éµÄÔªËØ£¬ÕâÊÇΨһµÄ·½·¨¡£
    2¡¢Ò»¶¨²»Òª¶Ô¹ØÁªÊý×éʹÓÃÄÚǶº¯Êýpush¡¢pop¡¢shift¼°splice£¬ÒòΪÆäÔªËØÎ»ÖÃÊÇËæ»úµÄ¡£
    °Ë¡¢ÁгöÊý×éµÄË÷ÒýºÍÖµ
        ÉÏÃæÒѾ­Ìáµ½£¬keys()º¯Êý·µ»Ø¹ØÁªÊý×éϱêµÄÁÐ±í£¬È磺
    %fruit = ("apples", 9,
              "bananas", 23,
              "cherries", 11);
    @fruitsubs = keys(%fruits);
    
        ÕâÀ@fruitsubs±»¸³¸øapples¡¢bananas¡¢cherries¹¹³ÉµÄÁÐ±í£¬ÔÙ´ÎÌáÇë×¢Ò⣬´ËÁбíûÓдÎÐò£¬ÈôÏë°´×Öĸ˳ÐòÅÅÁУ¬¿ÉʹÓÃsort()º¯Êý¡£
        @fruitindexes = sort keys(%fruits);
        ÕâÑù½á¹ûΪ("apples","bananas","cherries")¡£ÀàËÆµÄ£¬ÄÚǶº¯Êývalues()·µ»Ø¹ØÁªÊý×éÖµµÄÁÐ±í£¬È磺
    %fruit = ("apples", 9,
               "bananas", 23,
               "cherries", 11);
    @fruitvalues = values(%fruits);
    
        ÕâÀ@fruitvalues¿ÉÄܵĽá¹ûΪ(9,23.11)£¬´ÎÐò¿ÉÄܲ»Í¬¡£
    ¾Å¡¢ÓùØÁªÊý×éÑ­»·
        Ç°ÃæÒѾ­³öÏÖ¹ýÀûÓÃkeys()º¯ÊýµÄforeachÑ­»·Óï¾ä£¬ÕâÖÖÑ­»·Ð§ÂʱȽϵͣ¬ÒòΪÿ·µ»ØÒ»¸öϱ꣬»¹µÃÔÙȥѰÕÒÆäÖµ£¬È磺
    foreach $holder (keys(%records)){
      $record = $records{$holder};
    }
        PerlÌṩһÖÖ¸üÓÐЧµÄÑ­»··½Ê½£¬Ê¹ÓÃÄÚǶº¯Êýeach()£¬È磺
    %records = ("Maris", 61, "Aaron", 755, "Young", 511);
    while (($holder, $record) = each(%records)) {
      # stuff goes here
    }
        each()º¯Êýÿ´Î·µ»ØÒ»¸öË«ÔªËØµÄÁÐ±í£¬ÆäµÚÒ»¸öÔªËØÎªÏ±꣬µÚ¶þ¸öÔªËØÎªÏàÓ¦µÄÖµ£¬×îºó·µ»ØÒ»¸ö¿ÕÁÐ±í¡£
        ×¢Ò⣺ǧÍò²»ÒªÔÚeach()Ñ­»·ÖÐÌí¼Ó»òɾ³ýÔªËØ£¬·ñÔò»á²úÉú²»¿ÉÔ¤Áϵĺó¹û¡£
    Ê®¡¢ÓùØÁªÊý×é´´½¨Êý¾Ý½á¹¹
        ÓùØÁªÊý×é¿ÉÒÔÄ£ÄâÔÚÆäËü¸ß¼¶ÓïÑÔÖг£¼ûµÄ¶àÖÖÊý¾Ý½á¹¹£¬±¾½Ú½²ÊöÈçºÎÓÃ֮ʵÏÖ£ºÁ´±í¡¢½á¹¹ºÍÊ÷¡£
    1¡¢(µ¥)Á´±í
        Á´±íÊÇÒ»ÖֱȽϼòµ¥µÄÊý¾Ý½á¹¹£¬¿ÉÒÔ°´Ò»¶¨µÄ´ÎÐò´æÖüÖµ¡£Ã¿¸öÔªËØº¬ÓÐÁ½¸öÓò£¬Ò»¸öÊÇÖµ£¬Ò»¸öÊÇÒýÓ㨻ò³ÆÖ¸Õ룩£¬Ö¸ÏòÁ´±íÖÐÏÂÒ»¸öÔªËØ¡£Ò»¸öÌØÊâµÄÍ·Ö¸ÕëÖ¸ÏòÁ´±íµÄµÚÒ»¸öÔªËØ¡£
        ÔÚPerlÖУ¬Á´±íºÜÈÝÒ×ÓùØÁªÊý×éʵÏÖ£¬ÒòΪһ¸öÔªËØµÄÖµ¿ÉÒÔ×÷ΪÏÂÒ»¸öÔªËØµÄË÷Òý¡£ÏÂÀýΪ°´×Öĸ˳ÐòÅÅÁеĵ¥´ÊÁ´±í£º
    %words = ("abel", "baker", 
              "baker", "charlie",
              "charlie", "delta",
              "delta", "");
    $header = "abel";
    
        ÉÏÀýÖУ¬¼òµ¥±äÁ¿$headerº¬ÓÐÁ´±íÖеÚÒ»¸öµ¥´Ê£¬ËüͬʱҲÊǹØÁªÊý×éµÚÒ»¸öÔªËØµÄϱ꣬ÆäÖµbakerÓÖÊÇÏÂÒ»¸öÔªËØµÄϱ꣬ÒÀ´ËÀàÍÆ¡£
        Ï±êΪdeltaµÄ×îºóÒ»¸öÔªËØµÄֵΪ¿Õ´®£¬±íʾÁ´±íµÄ½áÊø¡£
        ÔÚ½«Òª´¦ÀíµÄÊý¾Ý¸öÊýδ֪»òÆäËæ³ÌÐòÔËÐжøÔö³¤µÄÇé¿öÏ£¬Á´±íÊ®·ÖÓÐÓá£ÏÂÀýÓÃÁ´±í°´×Öĸ´ÎÐòÊä³öÒ»¸öÎļþÖеĵ¥´Ê¡£
    1 : #!/usr/local/bin/perl
    2 :
    3 : # initialize list to empty
    4 : $header = "";
    5 : while ($line = <STDIN>) {
    6 :   # remove leading and trailing spaces
    7 :   $line =~ s/^\s+|\s+$//g;
    8 :   @words = split(/\s+/, $line);
    9 :   foreach $word (@words) {
    10:     # remove closing punctuation, if any
    11:     $word =~ s/[.,;:-]$//;
    12:     # convert all words to lower case
    13:     $word =~ tr/A-Z/a-z/;
    14:     &add_word_to_list($word);
    15:   }
    16: }
    17: &print_list;
    18:
    19: sub add_word_to_list {
    20:   local($word) = @_;
    21:   local($pointer);
    22:
    23:   # if list is empty, add first item
    24:   if ($header eq "") {
    25:     $header = $word;
    26:     $wordlist{$word} = "";
    27:     return;
    28:   }
    29:   # if word identical to first element in list,
    30:   # do nothing
    31:   return if ($header eq $word);
    32:   # see whether word should be the new
    33:   # first word in the list
    34:   if ($header gt $word) {
    35:     $wordlist{$word} = $header;
    36:     $header = $word;
    37:     return;
    38:   }
    39:   # find place where word belongs
    40:   $pointer = $header;
    41:   while ($wordlist{$pointer} ne "" &&
    42:     $wordlist{$pointer} lt $word) {
    43:     $pointer = $wordlist{$pointer};
    44:   }
    45:   # if word already seen, do nothing
    46:   return if ($word eq $wordlist{$pointer});
    47:   $wordlist{$word} = $wordlist{$pointer};
    48:   $wordlist{$pointer} = $word;
    49: }
    50:
    51: sub print_list {
    52:   local ($pointer);
    53:   print ("Words in this file:\n");
    54:   $pointer = $header;
    55:   while ($pointer ne "") {
    56:     print ("$pointer\n");
    57:     $pointer = $wordlist{$pointer};
    58:   }
    59: }
        ÔËÐнá¹ûÈçÏ£º
    Here are some words.
    Here are more words.
    Here are still more words.
    ^D
    Words in this file:
    are
    here
    more
    some
    still
    words
        ´Ë³ÌÐò·ÖΪÈý¸ö²¿·Ö£º
  • Ö÷³ÌÐò£º¶ÁÈ¡ÊäÈ벢ת»»µ½ÏàÓ¦µÄ¸ñʽ¡£
  • ×Ó³ÌÐò£ºadd_word_to_list£¬½¨Á¢ÅÅÐòµ¥´ÊÁ´±í¡£
  • ×Ó³ÌÐò£ºprint_list£¬Êä³öµ¥´ÊÁ´±í
  •     µÚ3~17ÐÐΪÖ÷³ÌÐò£¬µÚ4Ðгõʼ»¯Á´±í£¬½«±íÍ·±äÁ¿$headerÉèΪ¿Õ´®£¬µÚ5ÐÐÆðµÄÑ­»·Ã¿´Î¶ÁȡһÐÐÊäÈ룬µÚ7ÐÐÈ¥µôÍ·¡¢Î²µÄ¿Õ¸ñ£¬µÚ8Ðн«¾ä×Ó·Ö¸î³Éµ¥´Ê¡£9~15ÐеÄÄÚÑ­»·Ã¿´Î´¦ÀíÒ»¸öµ¥´Ê£¬Èç¹û¸Ãµ¥´ÊµÄ×îºóÒ»¸ö×Ö·ûÊDZêµã·ûºÅ£¬¾ÍÈ¥µô¡£µÚ13Ðаѵ¥´Êת»»³ÉȫСдÐÎʽ£¬µÚ14Ðд«µÝ¸ø×Ó³ÌÐòadd_word_to_list¡£
        ×Ó³ÌÐòadd_word_to_listÏÈÔÚµÚ24Ðд¦¼ì²éÁ´±íÊÇ·ñΪ¿Õ¡£Èç¹ûÊÇ£¬µÚ25Ðн«µ¥´Ê¸³¸ø$header£¬26Ðд´½¨Á´±íµÚÒ»¸öÔªËØ£¬´æÖüÔÚ¹ØÁªÊý×é%wordlistÖС£Èç¹ûÁ´±í·Ç¿Õ£¬37Ðмì²éµÚÒ»¸öÔªËØÊÇ·ñÓë¸Ãµ¥´ÊÏàͬ£¬Èç¹ûÏàͬ£¬¾ÍÁ¢¿Ì·µ»Ø¡£ÏÂÒ»²½¼ì²éÕâһе¥´ÊÊÇ·ñÓ¦¸ÃΪÁ´±íµÚÒ»¸öÔªËØ£¬¼´Æä°´×Öĸ˳ÐòÏÈÓÚ$header¡£Èç¹ûÊÇÕâÑù£¬Ôò£º
        1¡¢´´½¨Ò»¸öÐÂÔªËØ£¬Ï±êΪ¸Ãе¥´Ê£¬ÆäֵΪԭµÚÒ»¸öµ¥´Ê¡£
        2¡¢¸Ãе¥´Ê¸³¸ø$header¡£
        Èç¹û¸Ãе¥´Ê²»¸ÃΪµÚÒ»¸öÔªËØ£¬Ôò40~44ÐÐÀûÓþÖÓò±äÁ¿$pointerѰÕÒÆäºÏÊʵÄÓÐЧλÖã¬41~44ÐÐÑ­»·µ½$wordlist{$pointer}´óÓÚ»òµÈÓÚ$wordΪֹ¡£½ÓÏÂÀ´46Ðв鿴¸Ãµ¥´ÊÊÇ·ñÒÑÔÚÁ´±íÖУ¬Èç¹ûÔھͷµ»Ø£¬·ñÔò47~48Ðн«ÆäÌí¼Óµ½Á´±íÖС£Ê×ÏÈ47Ðд´½¨ÐÂÔªËØ$wordlist{$word}£¬ÆäֵΪ$wordlist{$pointer}£¬Õâʱ$wordlist{$word}ºÍ$wordlist{$pointer}Ö¸Ïòͬһ¸öµ¥´Ê¡£È»ºó£¬48Ðн«$wordlist{$pointer}µÄÖµ¸³Îª$word£¬¼´½«$wordlist{$pointer}Ö¸Ïò¸Õ´´½¨µÄÐÂÔªËØ$wordlist{$word}¡£
        ×îºóµ±´¦ÀíÍê±Ïºó£¬×Ó³ÌÐòprint_list()ÒÀ´ÎÊä³öÁ´±í£¬¾ÖÓò±äÁ¿$pointerº¬ÓÐÕýÔÚÊä³öµÄÖµ£¬$wordlist{$pointer}ΪÏÂÒ»¸öÒªÊä³öµÄÖµ¡£
        ×¢£ºÒ»°ã²»ÐèÒªÓÃÁ´±íÀ´×öÕâЩ¹¤×÷£¬ÓÃsort()ºÍkeys()ÔÚ¹ØÁªÊý×éÖÐÑ­»·¾Í×ã¹»ÁË£¬È磺
    foreach $word (sort keys(%wordlist)) {
      # print the sorted list, or whatever }
        µ«ÊÇ£¬ÕâÀïÉæ¼°µÄÖ¸ÕëµÄ¸ÅÄîÔÚÆäËüÊý¾Ý½á¹¹ÖкÜÓÐÒâÒå¡£
    2¡¢½á¹¹
        Ðí¶à±à³ÌÓïÑÔ¿ÉÒÔ¶¨Òå½á¹¹(structure)£¬¼´Ò»×éÊý¾ÝµÄ¼¯ºÏ¡£½á¹¹ÖеÄÿ¸öÔªËØÓÐÆä×Ô¼ºµÄÃû×Ö£¬²¢Í¨¹ý¸ÃÃû×ÖÀ´·ÃÎÊ¡£
        Perl²»Ö±½ÓÌṩ½á¹¹ÕâÖÖÊý¾Ý½á¹¹£¬µ«¿ÉÒÔÓùØÁªÊý×éÀ´Ä£Äâ¡£ÀýÈçÄ£ÄâCÓïÑÔÖÐÈçϵĽṹ£º
    struce{
      int field1;
      int field2;
      int field3; }mystructvar;
        ÎÒÃÇÒª×öµÄÊǶ¨ÒåÒ»¸öº¬ÓÐÈý¸öÔªËØµÄ¹ØÁªÊý×飬ϱê·Ö±ðΪfield1¡¢field2¡¢field3£¬È磺
    %mystructvar = ("field1" , "" ,
          "field2" , "" ,
          "field3" , "" ,);
        ÏñÉÏÃæCÓïÑԵ͍ÒåÒ»Ñù£¬Õâ¸ö¹ØÁªÊý×é%mystrctvarÓÐÈý¸öÔªËØ£¬Ï±ê·Ö±ðΪfield1¡¢field2¡¢field3£¬¸÷ÔªËØ³õʼֵ¾ùΪ¿Õ´®¡£¶Ô¸÷ÔªËØµÄ·ÃÎʺ͸³ÖµÍ¨¹ýÖ¸¶¨Ï±êÀ´½øÐУ¬È磺
        $mystructvar{"field1"} = 17;
    3¡¢Ê÷
        ÁíÒ»¸ö¾­³£Ê¹ÓõÄÊý¾Ý½á¹¹ÊÇÊ÷¡£Ê÷ÓëÁ´±íÀàËÆ£¬µ«Ã¿¸ö½ÚµãÖ¸ÏòµÄÔªËØ¶àÓÚÒ»¸ö¡£×î¼òµ¥µÄÊ÷ÊǶþ²æÊ÷£¬Ã¿¸ö½ÚµãÖ¸ÏòÁíÍâÁ½¸öÔªËØ£¬³ÆÎª×ó×Ó½ÚµãºÍÓÒ×ӽڵ㣨»ò³Æº¢×Ó£©£¬Ã¿¸ö×Ó½ÚµãÓÖÖ¸ÏòÁ½¸öËï×ӽڵ㣬ÒÀ´ËÀàÍÆ¡£
        ×¢£º´Ë´¦Ëù˵µÄÊ÷ÏñÉÏÊöÁ´±íÒ»ÑùÊǵ¥ÏòµÄ£¬Ã¿¸ö½ÚµãÖ¸ÏòÆä×ӽڵ㣬µ«×ӽڵ㲢²»Ö¸Ïò¸¸½Úµã¡£
        Ê÷µÄ¸ÅÄî¿ÉÒÔÈçÏÂÃèÊö£º
  • ÒòΪÿ¸ö×Ó½Úµã¾ùΪһ¸öÊ÷£¬ËùÒÔ×ó/ÓÒ×Ó½ÚµãÒ²³ÆÎª×ó/ÓÒ×ÓÊ÷¡££¨ÓÐʱ³Æ×ó/ÓÒ·ÖÖ§£©
  • µÚÒ»¸ö½Úµã£¨²»ÊÇÈκνڵãµÄ×Ó½ÚµãµÄ½Úµã£©³ÆÎªÊ÷µÄ¸ù¡£
  • ûÓк¢×Ó£¨×ӽڵ㣩µÄ½Úµã³ÆÎªÒ¶½Úµã¡£
  •     ÓжàÖÖʹÓùØÁªÊý×éʵÏÖÊ÷½á¹¹µÄ·½·¨£¬×îºÃµÄÒ»ÖÖÓ¦¸ÃÊÇ£º¸ø×Ó½Úµã·Ö±ð¼ÓÉÏleftºÍrightÒÔ·ÃÎÊÖ®¡£ÀýÈ磬alphaleftºÍalpharightÖ¸ÏòalphaµÄ×óÓÒ×ӽڵ㡣ÏÂÃæÊÇÓô˷½·¨´´½¨¶þ²æÊ÷²¢±éÀúµÄÀý³Ì£º
    1 : #!/usr/local/bin/perl
    2 :
    3 : $rootname = "parent";
    4 : %tree = ("parentleft", "child1",
    5 :          "parentright", "child2",
    6 :          "child1left", "grandchild1",
    7 :          "child1right", "grandchild2",
    8 :          "child2left", "grandchild3",
    9 :          "child2right", "grandchild4");
    10: # traverse tree, printing its elements
    11: &print_tree($rootname);
    12:
    13: sub print_tree {
    14:   local ($nodename) = @_;
    15:   local ($leftchildname, $rightchildname);
    16:
    17:   $leftchildname = $nodename . "left";
    18:   $rightchildname = $nodename . "right";
    19:   if ($tree{$leftchildname} ne "") {
    20:     &print_tree($tree{$leftchildname});
    21:   }
    22:   print ("$nodename\n");
    23:   if ($tree{$rightchildname} ne "") {
    24:     &print_tree($tree{$rightchildname});
    25:   }
    26: }
        ½á¹ûÊä³öÈçÏ£º
    grandchild1
    child1
    grandchild2
    parent
    grandchild3
    child2
    grandchild4
        ¸Ã³ÌÐò´´½¨µÄ¶þ²æÊ÷ÈçÏÂͼ£º

        ×¢Ò⺯Êýprint_tree()ÒÔ´ÎÐò¡°×ó×ÓÊ÷¡¢½Úµã¡¢ÓÒ×ÓÊ÷¡±À´Êä³ö¸÷½ÚµãµÄÃû×Ö£¬ÕâÖÖ±éÀú´ÎÐò³ÆÎª¡°×óÐò±éÀú¡±¡£Èç¹û°ÑµÚ22ÐÐÒÆµ½19ÐÐǰ£¬ÏÈÊä³ö½ÚµãÃ÷£¬ÔÙÊä³ö×ó×ÓÊ÷¡¢ÓÒ×ÓÊ÷£¬ÔòΪ¡°ÖÐÐò±éÀú¡±£¬Èç¹û°ÑµÚ22ÐÐÒÆµ½25Ðкó£¬Êä³ö´ÎÐòΪ×ó×ÓÊ÷¡¢ÓÒ×ÓÊ÷¡¢½Úµã£¬ÔòΪ¡°ÓÒÐò±éÀú¡±¡£
        ¿ÉÒÔÓÃͬÑùµÄ·½·¨£¬¼´Á¬½Ó×Ö·û´®¹¹³Éϱ꣬À´´´½¨ÆäËüµÄÊý¾Ý½á¹¹£¬ÈçÊý¾Ý¿âµÈ¡£

    ÉÏÒ»Õ ÏÂÒ»Õ Ŀ¼