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

Perl 5½Ì³Ì
by chinacode

Ŀ¼

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

µÚÒ»Õ ¸ÅÊö

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

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

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

µÚÎåÕ Îļþ¶Áд

µÚÁùÕ ģʽƥÅä

µÚÆßÕ ¿ØÖƽṹ

µÚ°ËÕ ×Ó³ÌÐò

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

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

µÚʮһÕ Îļþϵͳ

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

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

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

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

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

µÚÒ»ÕÂ cgilibÀý

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

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

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

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

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

by chinacode

Ò»¡¢Ä£¿é¼ò½é
¶þ¡¢PerlÖеÄÀà
Èý¡¢´´½¨Àà
ËÄ¡¢¹¹Ô캯Êý
  • ʵÀý±äÁ¿

  • Îå¡¢·½·¨
    Áù¡¢·½·¨µÄÊä³ö
    Æß¡¢·½·¨µÄµ÷ÓÃ
    °Ë¡¢ÖØÔØ
    ¾Å¡¢Îö¹¹º¯Êý
    Ê®¡¢¼Ì³Ð
    ʮһ¡¢·½·¨µÄÖØÔØ
    Ê®¶þ¡¢PerlÀàºÍ¶ÔÏóµÄһЩעÊÍ

        ±¾Õ½éÉÜÈçºÎʹÓÃPerlµÄÃæÏò¶ÔÏó±à³Ì(OOP)ÌØÐÔ¼°ÈçºÎ¹¹½¨¶ÔÏ󣬻¹°üÀ¨¼Ì³Ð¡¢·½·¨ÖØÔغÍÊý¾Ý·â×°µÈÄÚÈÝ¡£
    Ò»¡¢Ä£¿é¼ò½é
        Ä£¿é(module)¾ÍÊÇPerl°ü(pachage)¡£PerlÖеĶÔÏó»ùÓÚ¶Ô°üÖÐÊý¾ÝÏîµÄÒýÓᣣ¨ÒýÓüûµÚxÕÂÒýÓã©¡£
    Ïê¼ûhttp://www.metronet.comµÄperlmodºÍperlobj¡£
        ÔÚÓÃÆäËüÓïÑÔ½øÐÐÃæÏò¶ÔÏó±à³Ìʱ£¬ÏÈÉùÃ÷Ò»¸öÀàÈ»ºó´´½¨¸ÃÀàµÄ¶ÔÏó£¨ÊµÀý£©£¬Ìض¨ÀàËùÓжÔÏóµÄÐÐΪ·½Ê½ÊÇÏàͬµÄ£¬ÓÉÀà·½·¨È·¶¨£¬¿ÉÒÔͨ¹ý¶¨ÒåÐÂÀà»ò´ÓÏÖ´æÀà¼Ì³ÐÀ´´´½¨Àà¡£ÒÑÊìÏ¤ÃæÏò¶ÔÏó±à³ÌµÄÈË¿ÉÒÔÔÚ´ËÓöµ½Ðí¶àÊìϤµÄÊõÓï¡£PerlÒ»Ö±ÊÇÒ»¸öÃæÏò¶ÔÏóµÄÓïÑÔ£¬ÔÚPerl5ÖУ¬Óï·¨ÂÔÓб䶯£¬¸ü¹æ·¶»¯Á˶ÔÏóµÄʹÓá£
        ÏÂÃæÈý¸ö¶¨Òå¶ÔÀí½â¶ÔÏó¡¢ÀàºÍ·½·¨ÔÚPerlÖÐÈçºÎ¹¤×÷ÖÁ¹ØÖØÒª¡£
        .ÀàÊÇÒ»¸öPerl°ü£¬ÆäÖк¬Ìṩ¶ÔÏó·½·¨µÄÀà¡£
        .·½·¨ÊÇÒ»¸öPerl×Ó³ÌÐò£¬ÀàÃûÊÇÆäµÚÒ»¸ö²ÎÊý¡£
        .¶ÔÏóÊǶÔÀàÖÐÊý¾ÝÏîµÄÒýÓá£
    ¶þ¡¢PerlÖеÄÀà
        ÔÙÇ¿µ÷һϣ¬Ò»¸öPerlÀàÊǽöÊÇÒ»¸ö°ü¶øÒÑ¡£µ±Äã¿´µ½PerlÎĵµÖÐÌáµ½¡°Àࡱʱ£¬°ÑËü¿´×÷¡°°ü¡±¾ÍÐÐÁË¡£Perl5µÄÓï·¨¿ÉÒÔ´´½¨À࣬Èç¹ûÄãÒÑÊìϤC++£¬ÄÇô´ó²¿·ÖÓï·¨ÄãÒѾ­ÕÆÎÕÁË¡£ÓëPerl4²»Í¬µÄ¸ÅÄîÊÇÓÃ˫ðºÅ(::)À´±êʶ»ù±¾ÀàºÍ¼Ì³ÐÀࣨ×ÓÀࣩ¡£
        ÃæÏò¶ÔÏóµÄÒ»¸öÖØÒªÌØÐÔÊǼ̳С£PerlÖеļ̳ÐÌØÐÔÓëÆäËüÃæÏò¶ÔÏóÓïÑÔ²»ÍêȫһÑù£¬ËüÖ»¼Ì³Ð·½·¨£¬Äã±ØÐëÓÃ×Ô¼ºµÄ»úÖÆÀ´ÊµÏÖÊý¾ÝµÄ¼Ì³Ð¡£
        ÒòΪÿ¸öÀàÊÇÒ»¸ö°ü£¬ËùÒÔËüÓÐ×Ô¼ºµÄÃû×ֿռ估×Ô¼ºµÄ·ûºÅÃû¹ØÁªÊý×飨Ïê¼ûµÚxÕ¹ØÁªÊý×飩£¬Ã¿¸öÀàÒò¶ø¿ÉÒÔʹÓÃ×Ô¼ºµÄ¶ÀÁ¢·ûºÅÃû¼¯¡£Óë°üµÄÒýÓýáºÏ£¬¿ÉÒÔÓõ¥ÒýºÅ(')²Ù×÷·ûÀ´¶¨Î»ÀàÖеıäÁ¿£¬ÀàÖгÉÔ±µÄ¶¨Î»ÐÎʽÈ磺$class'$member¡£ÔÚPerl5ÖУ¬¿ÉÓÃ˫ðºÅÌæ´úµ¥ÒýºÅÀ´»ñµÃÒýÓã¬È磺$class'$memberÓë$class::$memberÏàͬ¡£
    Èý¡¢´´½¨Àà¡£
        ±¾½Ú½éÉÜ´´½¨Ò»¸öÐÂÀàµÄ±ØÒª²½Öè¡£ÏÂÃæÊ¹ÓõÄÀý×ÓÊÇ´´½¨Ò»¸ö³ÆÎªCocoaµÄ¼òµ¥µÄÀ࣬Æä¹¦ÄÜÊÇÊä³öÒ»¸ö¼òµ¥µÄJavaÓ¦ÓõÄÔ´ÂëµÄ±ØÒª²¿·Ö¡£·ÅÐÄ£¬Õâ¸öÀý×Ó²»ÐèÒªÄãÓÐJavaµÄ֪ʶ£¬µ«Ò²²»»áʹÄã³ÉΪJavaר¼Ò£¬ÆäÄ¿µÄÊǽ²Êö´´½¨ÀàµÄ¸ÅÄî¡£
        Ê×ÏÈ£¬´´½¨Ò»¸öÃûΪCocoa.pmµÄ°üÎļþ(À©Õ¹ÃûpmÊǰüµÄȱʡÀ©Õ¹Ãû£¬ÒâΪPerl Module)¡£Ò»¸öÄ£¿é¾ÍÊÇÒ»¸ö°ü£¬Ò»¸ö°ü¾ÍÊÇÒ»¸öÀà¡£ÔÚ×öÆäËüÊÂ֮ǰ£¬ÏȼÓÈë¡°1;¡±ÕâÑùÒ»ÐУ¬µ±ÄãÔö¼ÓÆäËüÐÐʱ£¬¼Çס±£Áô¡°1;¡±Îª×îºóÒ»ÐС£ÕâÊÇPerl°üµÄ±ØÐèÌõ¼þ£¬·ñÔò¸Ã°ü¾Í²»»á±»Perl´¦Àí¡£ÏÂÃæÊǸÃÎļþµÄ»ù±¾½á¹¹¡£
    package Cocoa;

    #
    # Put "require" statements in for all required,imported packages
    #

    #
    # Just add code here
    #

    1; # terminate the package with the required 1;
        ½ÓÏÂÀ´£¬ÎÒÃÇÍù°üÀïÌí¼Ó·½·¨Ê¹Ö®³ÉΪһ¸öÀà¡£µÚÒ»¸öÐèÌí¼ÓµÄ·½·¨ÊÇnew()£¬ËüÊÇ´´½¨¶ÔÏóʱ±ØÐë±»µ÷Óõģ¬new()·½·¨ÊǶÔÏóµÄ¹¹Ô캯Êý¡£
    ËÄ¡¢¹¹Ô캯Êý
        ¹¹Ô캯ÊýÊÇÀàµÄ×Ó³ÌÐò£¬Ëü·µ»ØÓëÀàÃûÏà¹ØµÄÒ»¸öÒýÓ᣽«ÀàÃûÓëÒýÓÃÏà½áºÏ³ÆÎª¡°×£¸£¡±Ò»¸ö¶ÔÏó£¬ÒòΪ½¨Á¢¸Ã½áºÏµÄº¯ÊýÃûΪbless()£¬ÆäÓ﷨Ϊ£º
        bless YeReference [,classname]
        YeReferenceÊǶԱ»¡°×£¸£¡±µÄ¶ÔÏóµÄÒýÓã¬classnameÊÇ¿ÉÑ¡Ïָ¶¨¶ÔÏó»ñÈ¡·½·¨µÄ°üÃû£¬ÆäȱʡֵΪµ±Ç°°üÃû¡£
        ´´½¨Ò»¸ö¹¹½¨º¯ÊýµÄ·½·¨Îª·µ»ØÒÑÓë¸ÃÀà½áºÏµÄÄÚ²¿½á¹¹µÄÒýÓã¬È磺
    sub new {
      my $this = {}; # Create an anonymous hash, and #self points to it.
      bless $this; # Connect the hash to the package Cocoa.
      return $this; # Return the reference to the hash.
    }

    1;
        {}´´½¨Ò»¸ö¶Ô²»º¬¼ü/Öµ¶ÔµÄ¹þÏ£±í£¨¼´¹ØÁªÊý×飩µÄÒýÓ㬷µ»ØÖµ±»¸³¸ø¾ÖÓò±äÁ¿$this¡£º¯Êýbless()È¡³ö¸ÃÒýÓ㬸æËß¶ÔÏóËüÒýÓõÄÊÇCocoa£¬×îºó·µ»Ø¸ÃÒýÓ᣺¯ÊýµÄ·µ»ØÖµÏÖÔÚÖ¸ÏòÕâ¸öÄäÃû¹þÏ£±í¡£
        ´Ónew()º¯Êý·µ»Øºó£¬$thisÒýÓñ»Ïú»Ù£¬µ«µ÷Óú¯Êý±£´æÁ˶ԸùþÏ£±íµÄÒýÓã¬Òò´Ë¸Ã¹þÏ£±íµÄÒýÓÃÊý²»»áΪÁ㣬´Ó¶øÊ¹PerlÔÚÄÚ´æÖб£´æ¸Ã¹þÏ£±í¡£´´½¨¶ÔÏó¿ÉÈçϵ÷Óãº
        $cup = new Cocoa;
        ÏÂÃæÓï¾äΪʹÓøðü´´½¨¶ÔÏóµÄÀý×Ó£º
    1 #!/usr/bin/perl
    2 push (@INC,'pwd');
    3 use Cocoa;
    4 $cup = new Cocoa;
        µÚÒ»ÐÐÖ¸³öPerl½âÊÍÆ÷µÄλÖ㬵ڶþÐÐÖУ¬½«µ±Ç°Ä¿Â¼¼Óµ½Â·¾¶Ñ°ÕÒÁбí@INCÖй©Ñ°ÕÒ°üʱʹÓá£ÄãÒ²¿ÉÒÔÔÚ²»Í¬µÄĿ¼Öд´½¨ÄãµÄÄ£¿é²¢Ö¸³ö¸Ã¾ø¶Ô·¾¶¡£ÀýÈ磬Èç¹ûÔÚ/home/test/scripts/´´½¨°ü£¬µÚ¶þÐоÍÓ¦¸ÃÈçÏ£º
        push (@INC , "/home/test/scripts");
        ÔÚµÚÈýÐÐÖУ¬°üº¬ÉϰüCocoa.pmÒÔ»ñÈ¡½Å±¾ÖÐËùÐ蹦ÄÜ¡£useÓï¾ä¸æËßPerlÔÚ@INC·¾¶Ñ°ÕÒÎļþCocoa.pm²¢°üº¬µ½½âÎöµÄÔ´Îļþ¿½±´ÖС£useÓï¾äÊÇʹÓÃÀà±ØÐëµÄ¡£µÚËÄÐе÷ÓÃnewº¯Êý´´½¨¶ÔÏó£¬ÕâÊÇPerlµÄÃî´¦£¬Ò²ÊÇÆäÒ×»ìÏýÖ®´¦£¬Ò²ÊÇÆäÇ¿´óÖ®´¦¡£´´½¨¶ÔÏóµÄ·½·¨ÓжàÖÖ£¬¿ÉÒÔÕâÑùд£º
        $cup = cocoa->new();
        Èç¹ûÄãÊÇC³ÌÐòÔ±£¬¿ÉÒÔÓÃ˫ðºÅÇ¿ÖÆÊ¹ÓÃCocoa°üÖеÄnew()º¯Êý£¬È磺
        $cup = Cocoa::new();
        ¿ÉÒÔÔÚ¹¹Ô캯ÊýÖмÓÈë¸ü¶àµÄ´úÂ룬ÈçÔÚCocoa.pmÖУ¬¿ÉÒÔÔÚÿ¸ö¶ÔÏó´´½¨Ê±Êä³öÒ»¸ö¼òµ¥ÉùÃ÷£¬»¹¿ÉÒÔÓù¹Ô캯Êý³õʼ»¯±äÁ¿»òÉèÖÃÊý×é»òÖ¸Õë¡£
    ×¢Ò⣺
    1¡¢Ò»¶¨ÒªÔÚ¹¹Ô캯ÊýÖгõʼ»¯±äÁ¿£»
    2¡¢Ò»¶¨ÒªÓÃmyº¯ÊýÔÚ·½·¨Öд´½¨±äÁ¿£»
    3¡¢Ò»¶¨²»ÒªÔÚ·½·¨ÖÐʹÓÃlocal£¬³ý·ÇÕæµÄÏë°Ñ±äÁ¿´«µÝ¸øÆäËü×Ó³ÌÐò£»
    4¡¢Ò»¶¨²»ÒªÔÚÀàÄ£¿éÖÐʹÓÃÈ«¾Ö±äÁ¿¡£
        ¼ÓÉÏÉùÃ÷µÄCocoa¹¹Ô캯ÊýÈçÏ£º
    sub new {
      my $this = {};
      print "\n /* \n ** Created by Cocoa.pm \n ** Use at own risk";
      print "\n ** Did this code even get pass the javac compiler? ";
      print "\n **/ \n";
      bless $this;
      return $this;
    }
        Ò²¿ÉÒÔ¼òµ¥µØµ÷ÓðüÄÚ»ò°üÍâµÄÆäËüº¯ÊýÀ´×ö¸ü¶àµÄ³õʼ»¯¹¤×÷£¬È磺
    sub new {
      my $this = {}
      bless $this;
      $this->doInitialization();
      return $this;
    }
        ´´½¨Ààʱ£¬Ó¦¸ÃÔÊÐíËü¿É±»¼Ì³Ð£¬Ó¦¸Ã¿ÉÒÔ°ÑÀàÃû×÷ΪµÚÒ»¸ö²ÎÊýÀ´µ÷ÓÃnewº¯Êý£¬ÄÇônewº¯Êý¾ÍÏóÏÂÃæµÄÓï¾ä£º
    sub new {
      my $class = shift; # Get the request class name
      my $this = {};
      bless $this, $class # Use class name to bless() reference
      $this->doInitialization(); return $this;
    }
        ´Ë·½·¨Ê¹Óû§¿ÉÒÔÏÂÁÐÈýÖÖ·½Ê½Ö®Ò»À´½øÐе÷Óãº
  • Cocoa::new()
  • Cocoa->new()
  • new Cocoa
  •     ¿ÉÒÔ¶à´ÎblessÒ»¸öÒýÓöÔÏó£¬È»¶ø£¬ÐµĽ«±»blessµÄÀà±ØÈ»°Ñ¶ÔÏóÒѱ»blessµÄÒýÓÃÈ¥µô£¬¶ÔCºÍPascal³ÌÐòÔ±À´Ëµ£¬Õâ¾ÍÏó°ÑÒ»¸öÖ¸Õ븳¸ø·ÖÅäµÄÒ»¿éÄڴ棬ÔÙ°ÑͬһָÕ븳¸øÁíÒ»¿éÄÚ´æ¶ø²»Êͷŵôǰһ¿éÄÚ´æ¡£×ÜÖ®£¬Ò»¸öPerl¶ÔÏóÿһʱ¿ÌÖ»ÄÜÊôÓÚÒ»¸öÀà¡£
        ¶ÔÏóºÍÒýÓõÄÕæÕýÇø±ðÊÇÊ²Ã´ÄØ£¿Perl¶ÔÏó±»blessÒÔÊôÓÚijÀ࣬ÒýÓÃÔò²»È»£¬Èç¹ûÒýÓñ»bless£¬Ëü½«ÊôÓÚÒ»¸öÀ࣬Ҳ±ã³ÉÁ˶ÔÏó¡£¶ÔÏóÖªµÀ×Ô¼ºÊôÓÚÄĸöÀ࣬ÒýÓÃÔò²»ÊôÓÚÈκÎÀà¡£

  • ʵÀý±äÁ¿


  •     ×÷Ϊ¹¹Ô캯ÊýµÄnew()º¯ÊýµÄ²ÎÊý½Ð×öʵÀý±äÁ¿¡£ÊµÀý±äÁ¿ÔÚ´´½¨¶ÔÏóµÄÿ¸öʵÀýʱÓÃÓÚ³õʼ»¯£¬ÀýÈç¿ÉÒÔÓÃnew()º¯ÊýΪ¶ÔÏóµÄÿ¸öʵÀýÆð¸öÃû×Ö¡£
        ¿ÉÒÔÓÃÄäÃû¹þÏ£±í»òÄäÃûÊý×éÀ´±£´æÊµÀý±äÁ¿¡£
        ÓùþÏ£±íµÄ´úÂëÈçÏ£º
    sub new {
    my $type = shift;
    my %parm = @_;
    my $this = {};
    $this->{'Name'} = $parm{'Name'};
    $this->{'x'} = $parm{'x'};
    $this->{'y'} = $parm{'y'};
    bless $this, $type;
    }
        ÓÃÊý×é±£´æµÄ´úÂëÈçÏ£º
    sub new {
    my $type = shift;
    my %parm = @_;
    my $this = [];
    $this->[0] = $parm{'Name'};
    $this->[1] = $parm{'x'};
    $this->[2] = $parm{'y'};
    bless $this, $type;
    }
        ¹¹Ôì¶ÔÏóʱ£¬¿ÉÒÔÈçÏ´«µÝ²ÎÊý£º
        $mug = Cocoa::new( 'Name' => 'top','x' => 10,'y' => 20 );
        ²Ù×÷·û=>Ó붺ºÅ²Ù×÷·þ¹¦ÄÜÏàͬ£¬µ«=>¿É¶ÁÐԺ᣷ÃÎÊ·½·¨ÈçÏ£º
        print "Name=$mug->{'Name'}\n";
        print "x=$mug->{'x'}\n";
        print "y=$mug->{'y'}\n";
    Îå¡¢·½·¨
        PerlÀàµÄ·½·¨Ö»²»¹ýÊÇÒ»¸öPerl×Ó³ÌÐò¶øÒÑ£¬Ò²¼´Í¨³£Ëù˵µÄ³ÉÔ±º¯Êý¡£PerlµÄ·½·¨¶¨Òå²»ÌṩÈκÎÌØÊâÓï·¨£¬µ«¹æ¶¨·½·¨µÄµÚÒ»¸ö²ÎÊýΪ¶ÔÏó»òÆä±»ÒýÓõİü¡£PerlÓÐÁ½ÖÖ·½·¨£º¾²Ì¬·½·¨ºÍÐé·½·¨¡£
        ¾²Ì¬·½·¨µÚÒ»¸ö²ÎÊýΪÀàÃû£¬Ðé·½·¨µÚÒ»¸ö²ÎÊýΪ¶ÔÏóµÄÒýÓ᣷½·¨´¦ÀíµÚÒ»¸ö²ÎÊýµÄ·½Ê½¾ö¶¨ÁËËüÊǾ²Ì¬µÄ»¹ÊÇÐéµÄ¡£¾²Ì¬·½·¨Ò»°ãºöÂÔµôµÚÒ»¸ö²ÎÊý£¬ÒòΪËüÃÇÒѾ­ÖªµÀ×Ô¼ºÔÚÄĸöÀàÁË£¬¹¹Ô캯Êý¼´¾²Ì¬·½·¨¡£Ðé·½·¨Í¨³£Ê×ÏȰѵÚÒ»¸ö²ÎÊýshiftµ½±äÁ¿self»òthisÖУ¬È»ºó½«¸ÃÖµ×÷ÆÕͨµÄÒýÓÃʹÓá£È磺
    1. sub nameLister {
    2.     my $this = shift;
    3.     my ($keys ,$value );
    4.     while (($key, $value) = each (%$this)) {
    5.         print "\t$key is $value.\n";
    6.     }
    7. }
    Áù¡¢·½·¨µÄÊä³ö
        Èç¹ûÄãÏÖÔÚÏëÒýÓÃCocoa.pm°ü£¬½«»áµÃµ½±àÒë´íÎó˵δÕÒµ½·½·¨£¬ÕâÊÇÒòΪCocoa.pmµÄ·½·¨»¹Ã»ÓÐÊä³ö¡£Êä³ö·½·¨ÐèÒªExporterÄ£¿é£¬ÔÚ°üµÄ¿ªÊ¼²¿·Ö¼ÓÉÏÏÂÁÐÁ½ÐУº
        require Exporter;
        @ISA = qw (Exporter);
        ÕâÁ½Ðаüº¬ÉÏExporter.pmÄ£¿é£¬²¢°ÑExporterÀàÃû¼ÓÈë@ISAÊý×éÒÔ¹©²éÕÒ¡£½ÓÏÂÀ´°ÑÄã×Ô¼ºµÄÀà·½·¨ÁÐÔÚ@EXPORTÊý×éÖоͿÉÒÔÁË¡£ÀýÈçÏëÊä³ö·½·¨closeMainºÍdeclareMain£¬Óï¾äÈçÏ£º
        @EXPORT = qw (declareMain , closeMain);
        PerlÀàµÄ¼Ì³ÐÊÇͨ¹ý@ISAÊý×éʵÏֵġ£@ISAÊý×é²»ÐèÒªÔÚÈκΰüÖж¨Ò壬Ȼ¶ø£¬Ò»µ©Ëü±»¶¨Ò壬Perl¾Í°ÑËü¿´×÷Ŀ¼ÃûµÄÌØÊâÊý×é¡£ËüÓë@INCÊý×éÀàËÆ£¬@INCÊǰüº¬ÎļþµÄѰÕÒ·¾¶¡£@ISAÊý×麬ÓÐÀà(°ü)Ãû£¬µ±Ò»¸ö·½·¨ÔÚµ±Ç°°üÖÐδÕÒµ½Ê±¾Íµ½@ISAÖеİüȥѰÕÒ¡£@ISAÖл¹º¬Óе±Ç°Àà¼Ì³ÐµÄ»ùÀàÃû¡£
        ÀàÖе÷ÓõÄËùÓз½·¨±ØÐëÊôÓÚͬһ¸öÀà»ò@ISAÊý×鶨ÒåµÄ»ùÀà¡£Èç¹ûÒ»¸ö·½·¨ÔÚ@ISAÊý×éÖÐδÕÒµ½£¬Perl¾Íµ½AUTOLOAD()×Ó³ÌÐòÖÐѰÕÒ£¬Õâ¸ö¿ÉÑ¡µÄ×Ó³ÌÐòÔÚµ±Ç°°üÖÐÓÃsub¶¨Òå¡£ÈôʹÓÃAUTOLOAD×Ó³ÌÐò£¬±ØÐëÓÃuse Autoload;Óï¾äµ÷ÓÃautoload.pm°ü¡£AUTOLOAD×Ó³ÌÐò³¢ÊÔ´ÓÒѰ²×°µÄPerl¿âÖÐ×°ÔØµ÷Óõķ½·¨¡£Èç¹ûAUTOLOADҲʧ°ÜÁË£¬PerlÔÙµ½UNIVERSALÀà×ö×îºóÒ»´Î³¢ÊÔ£¬Èç¹ûÈÔʧ°Ü£¬Perl¾ÍÉú³É¹ØÓÚ¸ÃÎÞ·¨½âÎöº¯ÊýµÄ´íÎó¡£
    Æß¡¢·½·¨µÄµ÷ÓÃ
        µ÷ÓÃÒ»¸ö¶ÔÏóµÄ·½·¨ÓÐÁ½ÖÖ·½·¨£¬Ò»ÊÇͨ¹ý¸Ã¶ÔÏóµÄÒýÓã¨Ðé·½·¨£©£¬Ò»ÊÇÖ±½ÓʹÓÃÀàÃû£¨¾²Ì¬·½·¨£©¡£µ±È»¸Ã·½·¨±ØÐëÒѱ»Êä³ö¡£ÏÖÔÚ¸øCocoaÀàÔö¼ÓһЩ·½·¨£¬´úÂëÈçÏ£º
    package Cocoa;
    require Exporter;
    @ISA = qw(Exporter);
    @EXPORT = qw(setImports, declareMain, closeMain);
    #
    # This routine creates the references for imports in Java functions
    #
    sub setImports{
      my $class = shift @_;
      my @names = @_;
      foreach (@names) {
        print "import " . $_ . ";\n";
      }
    }
    #
    # This routine declares the main function in a Java script
    #
    sub declareMain{
      my $class = shift @_;
      my ( $name, $extends, $implements) = @_;
      print "\n public class $name";
      if ($extends) {
        print " extends " . $extends;
      }
      if ($implements) {
        print " implements " . $implements;
      }
      print " { \n";
    }
    #
    # This routine declares the main function in a Java script
    #
    sub closeMain{
      print "} \n";
    }
    #
    # This subroutine creates the header for the file.
    #
    sub new {
      my $this = {};
      print "\n /* \n ** Created by Cocoa.pm \n ** Use at own risk \n */ \n";
      bless $this;
      return $this;
    }

    1;
        ÏÖÔÚ£¬ÎÒÃÇдһ¸ö¼òµ¥µÄPerl½Å±¾À´Ê¹ÓøÃÀàµÄ·½·¨£¬ÏÂÃæÊÇ´´½¨Ò»¸öJava appletÔ´´úÂë¹Ç¼ÜµÄ½Å±¾´úÂ룺
    #!/usr/bin/perl
    use Cocoa;
    $cup = new Cocoa;
    $cup->setImports( 'java.io.InputStream', 'java.net.*');
    $cup->declareMain( "Msg" , "java.applet.Applet", "Runnable");
    $cup->closeMain();
        Õâ¶Î½Å±¾´´½¨ÁËÒ»¸ö½Ð×öMsgµÄJava applet£¬ËüÀ©Õ¹(extend)ÁËjava.applet.AppletСӦÓóÌÐò²¢Ê¹Ö®¿ÉÔËÐÐ(runnable)£¬ÆäÖÐ×îºóÈýÐÐÒ²¿ÉÒÔд³ÉÈçÏ£º
    Cocoa::setImports($cup, 'java.io.InputStream', 'java.net.*');
    Cocoa::declareMain($cup, "Msg" , "java.applet.Applet", "Runnable");
    Cocoa::closeMain($cup);
        ÆäÔËÐнá¹ûÈçÏ£º
    /*
    ** Created by Cocoa.pm
    ** Use at own risk
    */
    import java.io.InputStream;
    import java.net.*;

    public class Msg extends java.applet.Applet implements Runnable {
    }
        ×¢Ò⣺Èç¹ûÓÃ->²Ù×÷·ûµ÷Ó÷½·¨£¨Ò²½Ð¼ä½Óµ÷Óã©£¬²ÎÊý±ØÐëÓÃÀ¨ºÅÀ¨ÆðÀ´£¬È磺$cup->setImports( 'java.io.InputStream', 'java.net.*');¶øË«Ã°ºÅµ÷ÓÃÈ磺Cocoa::setImports($cup, 'java.io.InputStream', 'java.net.*');Ò²¿ÉÈ¥µôÀ¨ºÅд³É£ºCocoa::setImports $cup, 'java.io.InputStream', 'java.net.*' ;
    °Ë¡¢ÖØÔØ
        ÓÐʱÐèÒªÖ¸¶¨Ê¹ÓÃÄĸöÀàµÄ·½·¨£¬ÈçÁ½¸ö²»Í¬µÄÀàÓÐͬÃû·½·¨µÄʱºò¡£¼ÙÉèÀàEspressoºÍQava¶¼¶¨ÒåÁË·½·¨grind£¬¿ÉÒÔÓÃ::²Ù×÷·ûÖ¸¶¨Ê¹ÓÃQavaµÄ·½·¨£º
        $mess = Qava::grind("whole","lotta","bags");
        Qava::grind($mess, "whole","lotta","bags");
        ¿ÉÒÔ¸ù¾Ý³ÌÐòµÄÔËÐÐÇé¿öÀ´Ñ¡ÔñʹÓÃÄĸöÀàµÄ·½·¨£¬Õâ¿ÉÒÔͨ¹ýʹÓ÷ûºÅÒýÓÃÈ¥µ÷ÓÃÀ´ÊµÏÖ£º
        $method = $local ? "Qava::" : "Espresso::";
        $cup->{$method}grind(@args);
    ¾Å¡¢Îö¹¹º¯Êý
        Perl¸ú×Ù¶ÔÏóµÄÁ´½ÓÊýÄ¿£¬µ±Ä³¶ÔÏóµÄ×îºóÒ»¸öÓ¦ÓÃÊͷŵ½ÄÚ´æ³ØÊ±£¬¸Ã¶ÔÏó¾Í×Ô¶¯Ïú»Ù¡£¶ÔÏóµÄÎö¹¹·¢ÉúÔÚ´úÂëÍ£Ö¹ºó£¬½Å±¾½«Òª½áÊøÊ±¡£¶ÔÓÚÈ«¾Ö±äÁ¿¶øÑÔ£¬Îö¹¹·¢ÉúÔÚ×îºóÒ»ÐдúÂëÔËÐÐÖ®ºó¡£
        Èç¹ûÄãÏëÔÚ¶ÔÏó±»ÊÍ·Å֮ǰ»ñÈ¡¿ØÖÆÈ¨£¬¿ÉÒÔ¶¨ÒåDESTROY()·½·¨¡£DESTROY()ÔÚ¶ÔÏó½«ÊÍ·Åǰ±»µ÷Óã¬Ê¹Äã¿ÉÒÔ×öһЩÇåÀí¹¤×÷¡£DESTROY()º¯Êý²»×Ô¶¯µ÷ÓÃÆäËüDESTROY()º¯Êý£¬Perl²»×öÄÚÖõÄÎö¹¹¹¤×÷¡£Èç¹û¹¹Ô캯Êý´Ó»ùÀà¶à´Îbless£¬DESTROY()¿ÉÄÜÐèÒªµ÷ÓÃÆäËüÀàµÄDESTROY()º¯Êý¡£µ±Ò»¸ö¶ÔÏó±»ÊÍ·Åʱ£¬ÆäÄÚº¬µÄËùÓжÔÏóÒýÓÃ×Ô¶¯ÊÍ·Å¡¢Ïú»Ù¡£
        Ò»°ãÀ´Ëµ£¬²»ÐèÒª¶¨ÒåDESTROY()º¯Êý£¬Èç¹ûÐèÒª£¬ÆäÐÎʽÈçÏ£º
    sub DESTROY {
    #
    # Add code here.
    #
    }
        ÒòΪ¶àÖÖÄ¿µÄ£¬PerlʹÓÃÁ˼òµ¥µÄ¡¢»ùÓÚÒýÓõÄÀ¬»ø»ØÊÕϵͳ¡£ÈκζÔÏóµÄÒýÓÃÊýÄ¿±ØÐë´óÓÚÁ㣬·ñÔò¸Ã¶ÔÏóµÄÄÚ´æ¾Í±»ÊÍ·Å¡£µ±³ÌÐòÍ˳öʱ£¬PerlµÄÒ»¸ö³¹µ×µÄ²éÕÒ²¢Ïú»Ùº¯Êý½øÐÐÀ¬»ø»ØÊÕ£¬½ø³ÌÖеÄÒ»Çб»¼òµ¥µØÉ¾³ý¡£ÔÚUNIXÀàµÄϵͳÖУ¬ÕâÏñÊǶàÓàµÄ£¬µ«ÔÚÄÚǶʽϵͳ»ò¶àÏ̻߳·¾³ÖÐÕâȷʵºÜ±ØÒª¡£
    Ê®¡¢¼Ì³Ð
        Àà·½·¨Í¨¹ý@ISAÊý×é¼Ì³Ð£¬±äÁ¿µÄ¼Ì³Ð±ØÐëÃ÷È·É趨¡£ÏÂÀý´´½¨Á½¸öÀàBean.pmºÍCoffee.pm£¬ÆäÖÐCoffee.pm¼Ì³ÐBean.pmµÄһЩ¹¦ÄÜ¡£´ËÀýÑÝʾÈçºÎ´Ó»ùÀࣨ»ò³Æ³¬Àࣩ¼Ì³ÐʵÀý±äÁ¿£¬Æä·½·¨Îªµ÷ÓûùÀàµÄ¹¹Ô캯Êý²¢°Ñ×Ô¼ºµÄʵÀý±äÁ¿¼Óµ½Ð¶ÔÏóÖС£
        Bean.pm´úÂëÈçÏ£º
    package Bean;
    require Exporter;
    @ISA = qw(Exporter);
    @EXPORT = qw(setBeanType);

    sub new {
      my $type = shift;
      my $this = {};
      $this->{'Bean'} = 'Colombian';
      bless $this, $type;
      return $this;
    }

    #
    # This subroutine sets the class name
    sub setBeanType{
      my ($class, $name) = @_;
      $class->{'Bean'} = $name;
      print "Set bean to $name \n";
    }
    1;
        ´ËÀàÖУ¬ÓÃ$this±äÁ¿ÉèÖÃÒ»¸öÄäÃû¹þÏ£±í£¬½«'Bean'ÀàÐÍÉèΪ'Colombian'¡£·½·¨setBeanType()ÓÃÓڸıä'Bean'ÀàÐÍ£¬ËüʹÓÃ$classÒýÓûñµÃ¶Ô¶ÔÏó¹þÏ£±íµÄ·ÃÎÊ¡£
        Coffee.pm´úÂëÈçÏ£º
    1  #
    2  # The Coffee.pm file to illustrate inheritance.
    3  #
    4  package Coffee;
    5  require Exporter;
    6  require Bean;
    7  @ISA = qw(Exporter, Bean);
    8  @EXPORT = qw(setImports, declareMain, closeMain);
    9  #
    10 # set item
    11 #
    12 sub setCoffeeType{
    13   my ($class,$name) = @_;
    14   $class->{'Coffee'} = $name;
    15   print "Set coffee type to $name \n";
    16   }
    17 #
    18 # constructor
    19 #
    20 sub new {
    21   my $type = shift;
    22   my $this = Bean->new(); ##### <- LOOK HERE!!! ####
    23   $this->{'Coffee'} = 'Instant'; # unless told otherwise
    24   bless $this, $type;
    25   return $this;
    26   }
    27 1;
        µÚ6ÐеÄrequire Bean;Óï¾ä°üº¬ÁËBean.pmÎļþºÍËùÓÐÏà¹Øº¯Êý£¬·½·¨setCoffeeType()ÓÃÓÚÉèÖþÖÓò±äÁ¿$class->{'Coffee'}µÄÖµ¡£ÔÚ¹¹Ô캯Êýnew()ÖУ¬$thisÖ¸ÏòBean.pm·µ»ØµÄÄäÃû¹þÏ£±íµÄÖ¸Õ룬¶ø²»ÊÇÔÚ±¾µØ´´½¨Ò»¸ö£¬ÏÂÃæÁ½¸öÓï¾ä·Ö±ðΪ´´½¨²»Í¬µÄ¹þÏ£±í´Ó¶øÓëBean.pm¹¹Ô캯Êý´´½¨µÄ¹þÏ£±íÎ޹صÄÇé¿öºÍ¼Ì³ÐµÄÇé¿ö£º
        my $this = {}; #·Ç¼Ì³Ð
        my $this = $theSuperClass->new(); #¼Ì³Ð
        ÏÂÃæ´úÂëÑÝʾÈçºÎµ÷Óü̳еķ½·¨£º
    1  #!/usr/bin/perl
    2  push (@INC,'pwd');
    3  use Coffee;
    4  $cup = new Coffee;
    5  print "\n -------------------- Initial values ------------ \n";
    6  print "Coffee: $cup->{'Coffee'} \n";
    7  print "Bean: $cup->{'Bean'} \n";
    8  print "\n -------------------- Change Bean Type ---------- \n";
    9  $cup->setBeanType('Mixed');
    10 print "Bean Type is now $cup->{'Bean'} \n";
    11 print "\n ------------------ Change Coffee Type ---------- \n";
    12 $cup->setCoffeeType('Instant');
    13 print "Type of coffee: $cup->{'Coffee'} \n";
        ¸Ã´úÂëµÄ½á¹ûÊä³öÈçÏ£º
    -------------------- Initial values ------------
    Coffee: Instant
    Bean: Colombian
    -------------------- Change Bean Type ----------
    Set bean to Mixed
    Bean Type is now Mixed
    ------------------ Change Coffee Type ----------
    Set coffee type to Instant
    Type of coffee: Instant
        ÉÏÊö´úÂëÖУ¬ÏÈÊä³ö¶ÔÏó´´½¨Ê±¹þÏ£±íÖÐË÷ÒýΪ'Bean'ºÍ'Coffee'µÄÖµ£¬È»ºóµ÷Óø÷³ÉÔ±º¯Êý¸Ä±äÖµºóÔÙÊä³ö¡£
        ·½·¨¿ÉÒÔÓжà¸ö²ÎÊý£¬ÏÖÔÚÏòCoffee.pmÄ£¿éÔö¼Óº¯ÊýmakeCup()£¬´úÂëÈçÏ£º
    sub makeCup {
      my ($class, $cream, $sugar, $dope) = @_;
      print "\n================================== \n";
      print "Making a cup \n";
      print "Add cream \n" if ($cream);
      print "Add $sugar sugar cubes\n" if ($sugar);
      print "Making some really addictive coffee ;-) \n" if ($dope);
      print "================================== \n";
    }
        ´Ëº¯Êý¿ÉÓÐÈý¸ö²ÎÊý£¬²»Í¬ÊýÄ¿¡¢ÖµµÄ²ÎÊý²úÉú²»Í¬µÄ½á¹û£¬ÀýÈ磺
    1  #!/usr/bin/perl
    2  push (@INC,'pwd');
    3  use Coffee;
    4  $cup = new Coffee;
    5  #
    6  # With no parameters
    7  #
    8  print "\n Calling with no parameters: \n";
    9  $cup->makeCup;
    10 #
    11 # With one parameter
    12 #
    13 print "\n Calling with one parameter: \n";
    14 $cup->makeCup('1');
    15 #
    16 # With two parameters
    17 #
    18 print "\n Calling with two parameters: \n";
    19 $cup->makeCup(1,'2');
    20 #
    21 # With all three parameters
    22 #
    23 print "\n Calling with three parameters: \n";
    24 $cup->makeCup('1',3,'1');
        Æä½á¹ûÊä³öÈçÏ£º
    Calling with no parameters:
    ==================================
    Making a cup
    ==================================
    Calling with one parameter:
    ==================================
    Making a cup
    Add cream
    ==================================
    Calling with two parameters:
    ==================================
    Making a cup
    Add cream
    Add 2 sugar cubes
    ==================================
    Calling with three parameters:
    ==================================
    Making a cup
    Add cream
    Add 3 sugar cubes
    Making some really addictive coffee ;-)
    ==================================
        ÔÚ´ËÀýÖУ¬º¯ÊýmakeCup()µÄ²ÎÊý¼È¿ÉΪ×Ö·û´®Ò²¿ÉΪÕûÊý£¬´¦Àí½á¹ûÏàͬ£¬ÄãÒ²¿ÉÒÔ°ÑÕâÁ½ÖÖÀàÐ͵ÄÊý¾Ý´¦ÀíÇø·Ö¿ª¡£ÔÚ¶Ô²ÎÊýµÄ´¦ÀíÖУ¬¿ÉÒÔÉèÖÃȱʡµÄÖµ£¬Ò²¿ÉÒÔ¸ù¾Ýʵ¼ÊÊäÈë²ÎÊýÖµµÄ¸öÊý¸øÓ費ͬ´¦Àí¡£
    ʮһ¡¢×ÓÀà·½·¨µÄÖØÔØ
        ¼Ì³ÐµÄºÃ´¦ÔÚÓÚ¿ÉÒÔ»ñµÃ»ùÀàÊä³öµÄ·½·¨µÄ¹¦ÄÜ£¬¶øÓÐʱÐèÒª¶Ô»ùÀàµÄ·½·¨ÖØÔØÒÔ»ñµÃ¸ü¾ßÌå»ò²»Í¬µÄ¹¦ÄÜ¡£ÏÂÃæÔÚBean.pmÀàÖмÓÈë·½·¨printType()£¬´úÂëÈçÏ£º
    sub printType {
      my $class = shift @_;
      print "The type of Bean is $class->{'Bean'} \n";
    }
        È»ºó¸üÐÂÆä@EXPORTÊý×éÀ´Êä³ö£º
        @EXPORT = qw ( setBeanType , printType );
        ÏÖÔÚÀ´µ÷Óú¯ÊýprintType()£¬ÓÐÈýÖÖµ÷Ó÷½·¨£º
    $cup->Coffee::printType();
    $cup->printType();
    $cup->Bean::printType();
        Êä³ö·Ö±ðÈçÏ£º
    The type of Bean is Mixed
    The type of Bean is Mixed
    The type of Bean is Mixed
        ÎªÊ²Ã´¶¼Ò»ÑùÄØ£¿ÒòΪÔÚ×ÓÀàÖÐûÓж¨Ò庯ÊýprintType()£¬ËùÒÔʵ¼Ê¾ùµ÷ÓÃÁË»ùÀàÖеķ½·¨¡£Èç¹ûÏëʹ×ÓÀàÓÐÆä×Ô¼ºµÄprintType()º¯Êý£¬±ØÐëÔÚCoffee.pmÀàÖмÓÒÔ¶¨Ò壺
    #
    # This routine prints the type of $class->{'Coffee'}
    #
    sub printType {
      my $class = shift @_;
      print "The type of Coffee is $class->{'Coffee'} \n";
    }
        È»ºó¸üÐÂÆä@EXPORTÊý×飺
        @EXPORT = qw(setImports, declareMain, closeMain, printType);
        ÏÖÔÚÊä³ö½á¹û±ä³ÉÁË£º
    The type of Coffee is Instant
    The type of Coffee is Instant
    The type of Bean is Mixed
        ÏÖÔÚÖ»Óе±¸ø¶¨ÁËBean::ʱ²Åµ÷ÓûùÀàµÄ·½·¨£¬·ñÔòÖ±½Óµ÷ÓÃ×ÓÀàµÄ·½·¨¡£
        ÄÇôÈç¹û²»ÖªµÀ»ùÀàÃû¸ÃÈçºÎµ÷ÓûùÀà·½·¨ÄØ£¿·½·¨ÊÇʹÓÃαÀà±£Áô×ÖSUPER::¡£ÔÚÀà·½·¨ÄÚʹÓÃÓï·¨È磺$this->SUPER::function(...argument list...); £¬Ëü½«´Ó@ISAÁбíÖÐѰÕÒ¡£¸Õ²ÅµÄÓï¾äÓÃSUPER::Ìæ»»Bean::¿ÉÒÔдΪ$cup->SUPER::printType(); £¬Æä½á¹ûÊä³öÏàͬ£¬Îª£º
    The type of Bean is Mixed
    Ê®¶þ¡¢PerlÀàºÍ¶ÔÏóµÄһЩעÊÍ
        OOPµÄ×î´óºÃ´¦¾ÍÊÇ´úÂëÖØÓá£OOPÓÃÊý¾Ý·â×°À´Òþ²ØÒ»Ð©¸´ÔӵĴúÂ룬PerlµÄ°üºÍÄ£¿éͨ¹ýmyº¯ÊýÌṩÊý¾Ý·â×°¹¦ÄÜ£¬µ«ÊÇPerl²¢²»±£Ö¤×ÓÀàÒ»¶¨²»»áÖ±½Ó·ÃÎÊ»ùÀàµÄ±äÁ¿£¬Õâȷʵ¼õÉÙÁËÊý¾Ý·â×°µÄºÃ´¦£¬ËäÈ»ÕâÖÖ¶¯×÷ÊÇ¿ÉÒÔ×öµ½µÄ£¬µ«È´ÊǸöºÜ»µµÄ±à³Ì·ç¸ñ¡£
    ×¢Ò⣺
    1¡¢Ò»¶¨ÒªÍ¨¹ý·½·¨À´·ÃÎÊÀà±äÁ¿¡£
    2¡¢Ò»¶¨²»Òª´ÓÄ£¿éÍⲿֱ½Ó·ÃÎÊÀà±äÁ¿¡£
        µ±±àд°üʱ£¬Ó¦¸Ã±£Ö¤·½·¨ËùÐèµÄÌõ¼þÒѾ߱¸»òͨ¹ý²ÎÊý´«µÝ¸øËü¡£ÔÚ°üÄÚ²¿£¬Ó¦±£Ö¤¶ÔÈ«¾Ö±äÁ¿µÄ·ÃÎÊÖ»ÓÃͨ¹ý·½·¨´«µÝµÄÒýÓÃÀ´·ÃÎÊ¡£¶ÔÓÚ·½·¨ÒªÊ¹Óõľ²Ì¬»òÈ«¾ÖÊý¾Ý£¬Ó¦¸ÃÔÚ»ùÀàÖÐÓÃlocal()À´¶¨Ò壬×ÓÀàͨ¹ýµ÷ÓûùÀàÀ´»ñÈ¡¡£ÓÐʱ£¬×ÓÀà¿ÉÄÜÐèÒª¸Ä±äÕâÖÖÊý¾Ý£¬Õâʱ£¬»ùÀà¿ÉÄܾͲ»ÖªµÀÔõÑùȥѰÕÒеÄÊý¾Ý£¬Òò´Ë£¬Õâʱ×îºÃ¶¨Òå¶Ô¸ÃÊý¾ÝµÄÒýÓã¬×ÓÀàºÍ»ùÀ඼ͨ¹ýÒýÓÃÀ´¸Ä±ä¸ÃÊý¾Ý¡£
        ×îºó£¬Ä㽫¿´µ½ÈçÏ·½Ê½À´Ê¹ÓöÔÏóºÍÀࣺ
        use coffee::Bean;
        Õâ¾äÓï¾äµÄº¬ÒåÊÇ¡°ÔÚ@INCÊý×éËùÓÐĿ¼µÄCoffee×ÓĿ¼À´Ñ°ÕÒBean.pm¡±¡£Èç¹û°ÑBean.pmÒÆµ½./CoffeeĿ¼£¬ÉÏÃæµÄÀý×Ó½«ÓÃÕâÒ»useÓï¾äÀ´¹¤×÷¡£ÕâÑùµÄºÃ´¦ÊÇÓÐÌõÀíµØ×éÖ¯ÀàµÄ´úÂë¡£ÔÙÈ磬ÏÂÃæµÄÓï¾ä£º
        use Another::Sub::Menu;
        Òâζ×ÅÈçÏÂ×ÓĿ¼Ê÷£º
        ./Another/Sub/Menu.pm

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