|
 |
À¸Ä¿µ¼À¸ |
|
| |
|
|
|
|
 |
×ÊÁÏËÑË÷ |
|
| |
|
|
|
|
 |
ÈÈÃÅÎÄÕÂ |
|
| |
|
|
|
|
 |
×îÐÂÎÄÕ |
|
| |
|
|
|
| |
| |
|
|
|
|
NAMENjqLinuxÁªÃË perlvar - Perl Ô¤¶¨Òå±äÁ¿NjqLinuxÁªÃË DESCRIPTIONNjqLinuxÁªÃË Ô¤¶¨ÒåÃû³ÆNjqLinuxÁªÃË ºóÃæÁгöµÄÃû³Æ¶Ô Perl À´Ëµ¾ßÓÐÌØÊ⺬Òå¡£NjqLinuxÁªÃË ´ó¶àÊý±êµãÃû³Æ¶¼ÓкÏÀíµÄÖú¼Ç·½·¨»òÀàËÆÓÚÔÚ shell ÖеÄÓ÷¨¡£NjqLinuxÁªÃË È»¶ø£¬Èç¹ûÄã¾ÍÊÇÏëÓó¤±äÁ¿Ãû£¬ÄÇÖ»ÒªÔÚ³ÌÐò¿ªÍ·¼ÓÉÏNjqLinuxÁªÃË use English;NjqLinuxÁªÃË ¼´¿É¡£ÕâÑù»áΪËùÓжÌÃû³ÆÔÚµ±Ç°°üÖд´½¨³¤Ãû³Æ±ðÃû¡£NjqLinuxÁªÃË ÆäÖÐһЩÉõÖÁ»¹ÓÐÖмäÃû£¬Ò»°ãÊÇ´Ó awk ½èÓùýÀ´µÄ¡£ Ò»°ãÀ´Ëµ£¬Èç¹û²»ÐèÒªNjqLinuxÁªÃË $PREMATCH£¬$MATCH ºÍ $POSTMATCH£¬ÄÇ×îºÃʹÓÃNjqLinuxÁªÃË use English '-no_match_vars';NjqLinuxÁªÃË µ÷Ó÷½Ê½£¬ÒòΪËüÄܱÜÃâÔÚÓÃÕýÔò±í´ïʽʱ³öÏÖЧÂʽµµÍµÄÇé¿ö¡£¼û English¡£NjqLinuxÁªÃË ÒÀÀµµ±Ç°±»Ñ¡ÖÐÎļþ¾ä±úµÄ±äÁ¿¿ÉÒÔͨ¹ýÔÚ IO::HandleNjqLinuxÁªÃË ¶ÔÏóÉϵ÷ÓúÏÊʵĶÔÏó·½·¨À´ÉèÖã¬NjqLinuxÁªÃË µ«ÊÇÕâÒª±ÈʹÓÃÆÕͨµÄÄÚ½¨±äÁ¿Ð§ÂʵÍһЩ¡£(ÏÂÃæµÄ¸ÅÀ¨ÐÐÀï°üº¬µÄµ¥´Ê HANDLENjqLinuxÁªÃË ¼´Ö¸ IO::Handle ¶ÔÏó¡£) Ê×ÏÈÄãÒªÉùÃ÷NjqLinuxÁªÃË use IO::Handle;NjqLinuxÁªÃË È»ºó¾Í¿ÉÒÔÓÃNjqLinuxÁªÃË method HANDLE EXPRNjqLinuxÁªÃË »òÕ߸ü°²È«µÄÐÎʽ£¬NjqLinuxÁªÃË HANDLE->method(EXPR)NjqLinuxÁªÃË Ã¿¸ö·½·¨¶¼·µ»Ø IO::Handle ÊôÐԵľÉÖµ£¬Í¬Ê±½ÓÊÜÒ»¸ö¿ÉÑ¡µÄ EXPR¡£NjqLinuxÁªÃË Èç¹ûÌṩÁ˸òÎÊý£¬ÔòÆäÖ¸¶¨ÁËËùÉæ¼° IO::HandleNjqLinuxÁªÃË ÊôÐÔµÄÐÂÖµ¡£Èç¹û²»Ìṩ¸Ã²ÎÊý£¬ ´ó¶àÊý·½·¨²»¸Ä±äµ±Ç°Öµ--³ýÁËNjqLinuxÁªÃË autoflush()£¬Ëü»á¼Ù¶¨¸ø¶¨Á˲ÎÊý 1£¬ÉÔÓв»Í¬¡£NjqLinuxÁªÃË ÔØÈë IO::HandleNjqLinuxÁªÃË ÀàÊÇÒ»Ïî´ú¼Û¸ß°ºµÄ²Ù×÷£¬Òò´ËÄã¸ÃÖªµÀÈçºÎʹÓ󣹿µÄÄÚ½¨±äÁ¿¡£NjqLinuxÁªÃË ÕâЩ±äÁ¿ÖеÄÉÙÊý¼¸¸öÊÇ¡°Ö»¶ÁµÄ¡±¡£ÕâÒâζ×ÅÈç¹ûÖ±½Ó»òÕßͨ¹ýÒýÓüä½ÓÏò¸Ã±äNjqLinuxÁªÃË Á¿¸³Öµ£¬ ¾Í»áÒýÆðÒ»¸öÔËÐÐʱÒì³£¡£NjqLinuxÁªÃË ÔÚÐ޸ı¾ÎĵµÖÐÃèÊöµÄ´ó²¿·ÖÌØÊâ±äÁ¿µÄȱʡֵʱ¶¼ÐèÒªÌØ±ðСÐÄ¡£¶àÊýÇé¿öÏÂÓ¦NjqLinuxÁªÃË ¸ÃÔÚÐÞ¸Ä֮ǰ¾Ö²¿»¯ÕâЩ±äÁ¿£¬Èç¹û²»Õâô×ö£¬¾Í¿ÉÄÜÓ°ÏìÒÀÀµÓÚÄãËùÐÞ¸ÄÌØÊâ±äÁ¿NjqLinuxÁªÃË È± ʡֵµÄÆäËûÄ£¿é¡£ÏÂÃæÊÇÒ»´ÎÐÔ¶ÁÈëÕû¸öÎļþµÄÒ»ÖÖÕýÈ··½·¨£ºNjqLinuxÁªÃË open my $fh, "foo" or die $!;NjqLinuxÁªÃË local $/; # enable localized slurp modeNjqLinuxÁªÃË my $content = <$fh>;NjqLinuxÁªÃË close $fh;NjqLinuxÁªÃË µ«ÏÂÃæµÄ´úÂë¾ÍºÜÔã¸â£ºNjqLinuxÁªÃË open my $fh, "foo" or die $!;NjqLinuxÁªÃË undef $/; # enable slurp modeNjqLinuxÁªÃË my $content = <$fh>;NjqLinuxÁªÃË close $fh;NjqLinuxÁªÃË NjqLinuxÁªÃË ÒòΪһЩģ¿é¿ÉÄÜÏëÒÔĬÈϵġ°ÐÐģʽ¡±´ÓÎļþÖжÁÈ¡Êý¾Ý£¬¶øÒ»µ©ÎÒÃǸղÅNjqLinuxÁªÃË ÁгöµÄ´úÂëµÃµ½Ö´ÐУ¬ÔÚͬһ¸ö Perl ½âÊÍÆ÷ÄÚÔËÐеÄËùÓÐÆäËû´úÂë¶Áµ½µÄ $/NjqLinuxÁªÃË È«¾ÖÖµ¶¼»á±»¸Ä±ä¡£NjqLinuxÁªÃË NjqLinuxÁªÃË Í¨³££¬ÔÚ¾Ö²¿»¯Ò»¸ö±äÁ¿Ê±×ÜÊÇÏëÈÃÓ°ÏìÏÞÖÆÔÚ¾¡¿ÉÄÜСµÄ·¶Î§ÄÚ£¬Òò´ËNjqLinuxÁªÃË Ó¦¸Ã×Ô¼º½¨Á¢Ò»¸ö "{}" ¿é£¬³ý·ÇÄãÒѾ´¦ÓÚijЩСµÄ "{}" ¿éÄÚ¡£ÀýÈ磺NjqLinuxÁªÃË my $content = '';NjqLinuxÁªÃË open my $fh, "foo" or die $!;NjqLinuxÁªÃË {NjqLinuxÁªÃË local $/;NjqLinuxÁªÃË $content = <$fh>;NjqLinuxÁªÃË }NjqLinuxÁªÃË close $fh;NjqLinuxÁªÃË NjqLinuxÁªÃË ÏÂÃæÊÇ´úÂëʧ¿ØµÄÒ»¸öÀý×Ó£ºNjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË for (1..5){NjqLinuxÁªÃË NjqLinuxÁªÃË nasty_break();NjqLinuxÁªÃË NjqLinuxÁªÃË print "$_ ";NjqLinuxÁªÃË NjqLinuxÁªÃË }NjqLinuxÁªÃË NjqLinuxÁªÃË sub nasty_break {NjqLinuxÁªÃË NjqLinuxÁªÃË $_ = 5;NjqLinuxÁªÃË NjqLinuxÁªÃË # do something with $_NjqLinuxÁªÃË NjqLinuxÁªÃË }NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË Äã¿ÉÄÜÏ£ÍûÉÏÊö´úÂë´òÓ¡³ö£ºNjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË 1 2 3 4 5NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË µ«Êµ¼ÊÉϵõ½µÄÈ´ÊÇ£ºNjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË 5 5 5 5 5NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ÎªÊ²Ã´£¿ÒòΪ nasty_break() ÐÞ¸ÄÁË $_ ¶øÃ»ÓÐÊÂÏȽ«Æä¾Ö²¿»¯¡£NjqLinuxÁªÃË NjqLinuxÁªÃË ¸ÄÕý·½·¨ÊÇÔö¼Ó local()£ºNjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË local $_ = 5;NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ËäÈ»ÔÚÕâÑùÒ»¸ö¶ÌСµÄÀý×ÓÀïºÜÈÝÒ×·¢ÏÖÎÊÌ⣬µ«ÔÚ¸ü¸´ÔӵĴúÂëÖУ¬Èç¹û²»NjqLinuxÁªÃË NjqLinuxÁªÃË ¶ÔÌØÊâ±äÁ¿½øÐоֲ¿»¯¸ü¸Ä¾ÍÊÇÔÚ×ÔÕÒÂé·³¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ÏÂÁÐÄÚÈݰ´ÕÕÏȱêÁ¿±äÁ¿¡¢ºóÊý×é¡¢×îºóÉ¢ÁеÄ˳ÐòÅÅÁС£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË $ARGNjqLinuxÁªÃË NjqLinuxÁªÃË $_ ĬÈϵÄÊäÈëºÍģʽËÑË÷¿Õ¼ä¡£ÏÂÃæµÄ¼¸¶Ô´úÂë¶¼ÊǵÈͬµÄ£ºNjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË while (<>) {...} # equivalent only in while!NjqLinuxÁªÃË NjqLinuxÁªÃË while (defined($_ = <>)) {...}NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË /^Subject:/NjqLinuxÁªÃË NjqLinuxÁªÃË $_ =~ /^Subject:/NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË tr/a-z/A-Z/NjqLinuxÁªÃË NjqLinuxÁªÃË $_ =~ tr/a-z/A-Z/NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË chompNjqLinuxÁªÃË NjqLinuxÁªÃË chomp($_)NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ÒÔÏÂÊǼ¸´¦¼´Ê¹Ã»ÓÐдÃ÷ Perl Ò²»á¼Ù¶¨Ê¹Óà $_ µÄµØ·½£ºNjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË * ¸÷ÖÖµ¥Ä¿º¯Êý£¬°üÀ¨Ïñ ord() ºÍ int() ÕâÑùµÄº¯ÊýÒÔ¼°³ý "-t"NjqLinuxÁªÃË NjqLinuxÁªÃË ÒÔÍâËùÓеÄÎļþ ²âÊÔ²Ù×÷ ("-f"£¬"-d")£¬"-t" ĬÈϲÙ×÷ STDIN¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË * ¸÷ÖÖÁÐ±íº¯Êý£¬ÀýÈç print() ºÍ unlink()¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË * ûÓÐʹÓà "=~" ÔËËã·ûʱµÄģʽƥÅä²Ù×÷ "m//"¡¢"s///" ºÍNjqLinuxÁªÃË NjqLinuxÁªÃË "tr///"¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË * ÔÚûÓиø³öÆäËû±äÁ¿Ê±ÊÇ "foreach" Ñ»·µÄĬÈϵü´ú±äÁ¿¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË * grep() ºÍ map() º¯ÊýµÄÒþº¬µü´ú±äÁ¿¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË * µ± "while" ½öÓÐΨһÌõ¼þ£¬ÇÒ¸ÃÌõ¼þÊÇ¶Ô "<FH>"NjqLinuxÁªÃË NjqLinuxÁªÃË ²Ù×÷µÄ½á¹û½øÐвâÊÔʱ£¬$_ ¾ÍÊÇ´æ·ÅÊäÈë¼Ç¼µÄĬÈÏλÖᣳýÁËNjqLinuxÁªÃË NjqLinuxÁªÃË "while" ²âÊÔÌõ¼þÖ®Íâ²»»á·¢ÉúÕâÖÖÇé¿ö¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË (Öú¼Ç£ºÏ»®ÏßÔÚÌØ¶¨²Ù×÷ÖÐÊÇ¿ÉÒÔÊ¡ÂԵġ£)NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË $aNjqLinuxÁªÃË NjqLinuxÁªÃË $b ÊÇʹÓà sort() ʱµÄÌØÊâ°ü±äÁ¿£¬²Î¼û "sort" in perlfunc¡£NjqLinuxÁªÃË NjqLinuxÁªÃË ÓÉÓÚÕâÒ»ÌØÊâÐÔ£¬$a ºÍ $b ¼´Ê¹ÔÚÓÃÁË "strict 'vars'"NjqLinuxÁªÃË NjqLinuxÁªÃË Ö¸Ê¾·ûÒÔºóÒ²²»ÐèÒªÉùÃ÷(Óà use vars »òÕß our())¡£ Èç¹ûÏëÒªÔÚNjqLinuxÁªÃË NjqLinuxÁªÃË sort() µÄ±È½Ï¿é»òÕߺ¯ÊýÖÐʹÓÃËüÃÇ£¬¾Í²»ÒªÓà "my $a" »ò "my $b"NjqLinuxÁªÃË NjqLinuxÁªÃË ½«Æä´Ê·¨»¯¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË $<*digits*>NjqLinuxÁªÃË NjqLinuxÁªÃË º¬ÓÐÉÏ´ÎģʽƥÅäÖв¶»ñÀ¨ºÅ¼¯ºÏËù¶ÔÓ¦µÄ×Óģʽ£¬²»°üÀ¨ÒѾÍ˳öµÄǶNjqLinuxÁªÃË NjqLinuxÁªÃË Ì× ¿éÖÐÆ¥ÅäµÄģʽ¡£(Öú¼Ç£ºÀàËÆ \digits¡£)NjqLinuxÁªÃË NjqLinuxÁªÃË ÕâЩ±äÁ¿È«¶¼ÊÇÖ»¶ÁµÄ£¬¶ÔÓÚ µ±Ç°¿éÀ´Ëµ¾ßÓж¯Ì¬×÷ÓÃÓò¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË $MATCHNjqLinuxÁªÃË NjqLinuxÁªÃË $& º¬ÓÐÉϴγɹ¦µÄģʽƥÅäËùÆ¥Åäµ½µÄ×Ö·û´®(²»°üÀ¨ÈκÎÒþ²ØÔÚ¿éÖÐµÄÆ¥?NjqLinuxÁªÃË NjqLinuxÁªÃË ä»òµ±Ç?¿éËù°üΧµÄ eval())¡£(Öú¼Ç£ºÍ¬Ò»Ð©±à¼Æ÷ÖÐµÄ & ÀàËÆ¡£)NjqLinuxÁªÃË NjqLinuxÁªÃË ¸Ã±äÁ¿ÊÇÖ»¶ÁµÄ£¬ ¶ÔÓÚµ±Ç°¿éÀ´Ëµ¾ßÓж¯Ì¬×÷ÓÃÓò¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ÔÚ³ÌÐòÖÐÈκεط½Ê¹ÓøñäÁ¿¶¼»áʹËùÓÐÕýÔò±í´ïʽƥÅä²úÉú¿É¹ÛµÄЧÂÊNjqLinuxÁªÃË NjqLinuxÁªÃË ½µµÍ¡£ ²Î¼û "BUGS"¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË $PREMATCHNjqLinuxÁªÃË NjqLinuxÁªÃË $` º¬ÓÐÉϴγɹ¦µÄģʽƥÅäÄÚÈÝ֮ǰµÄ×Ö·û´®(²»°üÀ¨ÈκÎÒþ²ØÔÚ¿éÖÐµÄÆ¥?NjqLinuxÁªÃË NjqLinuxÁªÃË ä»òµ±Ç?¿éËù°üΧµÄ eval)¡£(Öú¼Ç£º"`"NjqLinuxÁªÃË NjqLinuxÁªÃË ³£³£³öÏÖÔÚÒýÆðµÄ×Ö·û´®Ö®Ç°¡£) ¸Ã±äÁ¿ÊÇÖ»¶ÁµÄ¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ÔÚ³ÌÐòÖÐÈκεط½Ê¹ÓøñäÁ¿¶¼»áʹËùÓÐÕýÔò±í´ïʽƥÅä²úÉú¿É¹ÛµÄЧÂÊNjqLinuxÁªÃË NjqLinuxÁªÃË ½µµÍ¡£ ²Î¼û "BUGS"¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË $POSTMATCHNjqLinuxÁªÃË NjqLinuxÁªÃË $' º¬ÓÐÉϴγɹ¦µÄģʽƥÅäÄÚÈÝÖ®ºóµÄ×Ö·û´®(²»°üÀ¨ÈκÎÒþ²ØÔÚ¿éÖÐµÄÆ¥?NjqLinuxÁªÃË NjqLinuxÁªÃË ä»òµ±Ç?¿éËù°üΧµÄ eval())¡£(Öú¼Ç£º"'"NjqLinuxÁªÃË NjqLinuxÁªÃË ³£³£¸úÔÚÒýÆðµÄ×Ö·û´®Ö®ºó¡£) ÀýÈ磺NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË local $_ = 'abcdefghi';NjqLinuxÁªÃË NjqLinuxÁªÃË /def/;NjqLinuxÁªÃË NjqLinuxÁªÃË print "$`:$&:$'\n"; # prints abc:def:ghiNjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ¸Ã±äÁ¿Ö»¶ÁÇÒ¶ÔÓÚµ±Ç°¿é¾ßÓж¯Ì¬×÷ÓÃÓò¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ÔÚ³ÌÐòÖÐÈκεط½Ê¹ÓøñäÁ¿¶¼»áʹËùÓÐÕýÔò±í´ïʽƥÅä²úÉú¿É¹ÛµÄЧÂÊNjqLinuxÁªÃË NjqLinuxÁªÃË ½µµÍ¡£ ²Î¼û "BUGS"¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË $LAST_PAREN_MATCHNjqLinuxÁªÃË NjqLinuxÁªÃË $+ º¬ÓÐÉϴγɹ¦µÄËÑË÷ģʽÖÐ×îºóÒ»¸öÀ¨ºÅÆ¥ÅäµÄÎı¾¡£ÔÚÎÞ·¨ÖªµÀ¿ÉѡģNjqLinuxÁªÃË NjqLinuxÁªÃË Ê½¼¯ÖÐ µ½µ×ÄÄÒ»¸öÆ¥Åä³É¹¦Ê±£¬¸Ã±äÁ¿ÊǷdz£ÓÐÓõġ£ÀýÈ磺NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË /Version: (.*)|Revision: (.*)/ && ($rev = $+);NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË (Öú¼Ç£º»ý¼«Ò»µã¶ùÏòǰ¿´¡£)(Òë×¢£º¡°»ý¼«¡±Óë¡°ÕýºÅ¡±ÊÇͬһ¸öµ¥´Ê?NjqLinuxÁªÃË NjqLinuxÁªÃË ? ¸Ã±äÁ¿Ö»¶ÁÇÒÏà¶ÔÓÚµ±Ç°¿é¾ßÓж¯Ì¬×÷ÓÃÓò¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË $^N º¬ÓÐÉÏÒ»´Î³É¹¦ËÑË÷ģʽÖÐ×î½ü±ÕºÏµÄ×é(¼´×îÓұߵÄÓÒÀ¨ºÅ¹¹³ÉµÄ×é)ËùNjqLinuxÁªÃË NjqLinuxÁªÃË Æ¥Åä µÄÎı¾¡£(Öú¼Ç£º×î½ü±ÕºÏµÄ(¿ÉÄÜ)ǶÌ×µÄÀ¨ºÅ¡£)NjqLinuxÁªÃË NjqLinuxÁªÃË (Òë×¢£ºÇ¶Ì׵ĵ¥´ÊΪ Nest¡£)NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ¸Ã±äÁ¿Ö÷ÒªÓÃÔÚ "(?{...})"NjqLinuxÁªÃË NjqLinuxÁªÃË ¿éµÄÄÚ²¿£¬ÒÔ±ã¼ì²é×î½üÆ¥Åäµ½µÄÎı¾¡£ÀýÈ磬NjqLinuxÁªÃË NjqLinuxÁªÃË ÎªÁËÓÐЧµØÓÃÒ»¸ö±äÁ¿($1¡¢$2 µÈµÈÖ®ÍâµÄ±äÁ¿)²¶»ñÎı¾£¬¿ÉÒÔ½«NjqLinuxÁªÃË NjqLinuxÁªÃË "(...)" Ìæ»»ÎªNjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË (?:(...)(?{ $var = $^N }))NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ÏñÕâÑùÉèÖò¢Ê¹Óà $var ¾ÍÄܰÑÄã´Ó¼ÆËãÀ¨ºÅ¸öÊýµÄ·³ÄÕÖнâ·Å³öÀ´ÁË¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ¸Ã±äÁ¿¶ÔÓÚµ±Ç°¿é¾ßÓж¯Ì¬×÷ÓÃÓò¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË @LAST_MATCH_ENDNjqLinuxÁªÃË NjqLinuxÁªÃË @+ ¸ÃÊý×é±£´æÁ˵±Ç°»î¶¯µÄ¶¯Ì¬×÷ÓÃÓòÖÐ×î½ü³É¹¦µÄ×ÓÆ¥Åä½áÊø´¦µÄÆ«ÒÆÁ¿NjqLinuxÁªÃË NjqLinuxÁªÃË ¡£ $+[0]NjqLinuxÁªÃË NjqLinuxÁªÃË ÎªÕû¸öÆ¥ÅäÔÚ×Ö·û´®ÖнáÊø´¦µÄÆ«ÒÆÁ¿£¬ÕâͬÓñ»Æ¥ÅäµÄ±äÁ¿µ÷Óà "pos"NjqLinuxÁªÃË NjqLinuxÁªÃË º¯ÊýµÃµ½µÄÖµÒ»Ñù¡£¸ÃÊý×éµÄµÚ *n* ¸öÔªËØ±£´æÁËµÚ *n* ¸ö×ÓÆ¥ÅäNjqLinuxÁªÃË NjqLinuxÁªÃË µÄÆ«ÒÆÁ¿£¬Òò´Ë $+[1] ¾ÍÊǽô½Ó×Å $1 ½áÊø´¦µÄÆ«ÒÆÁ¿£¬$+[2] ÊÇNjqLinuxÁªÃË NjqLinuxÁªÃË ½ô½Ó×Å $2 ½áÊø´¦µÄÆ«ÒÆÁ¿£¬ÒÔ´ËÀàÍÆ¡£¿ÉÒÔÓà $#+NjqLinuxÁªÃË NjqLinuxÁªÃË µÃÖª×î½ü³É¹¦µÄÆ¥Åä ÖÐÓжàÉÙ¸ö×é¡£²Î¼ûΪ "@-" ±äÁ¿¸ø³öµÄÀý×Ó¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË $* ½«ÆäÉèΪ·ÇÁãÕûÊýÖµ¾Í¿ÉÒÔ½øÐÐ×Ö·û´®ÄڵĶàÐÐÆ¥Å䣬ÉèΪNjqLinuxÁªÃË NjqLinuxÁªÃË 0(»ò䶨ÒåÖµ) Ï൱ÓÚ¸æËß PerlNjqLinuxÁªÃË NjqLinuxÁªÃË ¿ÉÒÔ¼Ù¶¨×Ö·û´®¶¼Êǵ¥Ðе쬴ӶøÄܽøÐÐģʽƥÅäµÄÓÅ»¯¡£µ± $* Ϊ 0NjqLinuxÁªÃË NjqLinuxÁªÃË »ò䶨Òåֵʱ£¬¶Ôº¬Óжà¸ö»»ÐзûµÄ×Ö·û´®½øÐÐģʽƥÅä»á²úÉúºÜÄÑNjqLinuxÁªÃË NjqLinuxÁªÃË Àí½âµÄ½á¹û¡£ËüĬÈÏΪ䶨ÒåÖµ¡£(Öú¼Ç£º* Æ¥ÅäºÜ¶à¶«Î÷¡£)NjqLinuxÁªÃË NjqLinuxÁªÃË ¸Ã±äÁ¿Ö»Ó°Ïì¶Ô "^" ºÍ "$" µÄ½âÊÍ¡£¼´Ê¹ÔÚ "$* == 0"NjqLinuxÁªÃË NjqLinuxÁªÃË Ê±Ò²¿ÉÒÔËÑË÷Ò»¸ö×ÖÃæµÄ»»Ðзû¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ÔÚÏÖÔÚµÄ Perl ÀﲻӦʹÓà $*£¬ÔÚģʽƥÅäÖпÉÒÔÓà "/s" ºÍ "/m"NjqLinuxÁªÃË NjqLinuxÁªÃË ÐÞÊηûÈ¡´ú ËüµÄ¹¦ÄÜ¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ¶Ô $* ¸³·ÇÊýÖµÁ¿»á´¥·¢Ò»¸ö¾¯¸æ(²¢Ê¹ $* ±íÏÖΪ "$* == 0")£¬¶Ô $*NjqLinuxÁªÃË NjqLinuxÁªÃË ¸³ÊýÖµÁ¿Ôò»áÒþº¬¶ÔÆäÓ¦Óà "int"¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË HANDLE->input_line_number(EXPR)NjqLinuxÁªÃË NjqLinuxÁªÃË $INPUT_LINE_NUMBERNjqLinuxÁªÃË NjqLinuxÁªÃË $NRNjqLinuxÁªÃË NjqLinuxÁªÃË $. Ϊ×îºó·ÃÎʵÄÎļþ¾ä±ú¶ÔÓ¦µÄµ±Ç°Ðкš£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË Perl ÖÐÿ¸öÎļþ¾ä±ú¶¼¼Ç¼´ÓÆäÖжÁ³öµÄÐÐÊý¡£(PerlNjqLinuxÁªÃË NjqLinuxÁªÃË ÖÐÐеĸÅÄîÒ²ÐíºÍÄã²»Ò» Ñù£¬Òª¿´ $/ µÄÖµÊÇʲô¡£)NjqLinuxÁªÃË NjqLinuxÁªÃË µ±´Óij¸öÎļþ¾ä±úÖжÁ³öÒ»ÐÐ(ͨ¹ý readline() »ò "<>")»ò¶ÔÆäµ÷ÓÃNjqLinuxÁªÃË NjqLinuxÁªÃË tell() »ò seek() ʱ£¬$. ¼´³ÉΪÄǸö¾ä±úµÄÐÐ ¼ÆÊýÆ÷µÄ±ðÃû¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË Äã¿ÉÒÔͨ¹ýÏò $. ¸³ÖµÀ´µ÷Õû¼ÆÊýÆ÷£¬µ«Õâ²¢²»»áʵ¼ÊÒÆ¶¯ÎļþÖ¸Õë¡£NjqLinuxÁªÃË NjqLinuxÁªÃË *¾Ö²¿»¯ $. ²»»áʹ¶ÔÓ¦Îļþ¾ä±úµÄÐмÆÊýÆ÷¾Ö²¿»¯*£¬¶øÖ»»á¾Ö²¿»¯ $.NjqLinuxÁªÃË NjqLinuxÁªÃË ºÍÎļþ¾ä±úµÄ±ðÃû¹ØÏµ¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ¹Ø±ÕÎļþ¾ä±úʱ»á¸´Î» $.£¬µ«ÔÚûÓÐ close()NjqLinuxÁªÃË NjqLinuxÁªÃË ¾ÍÖØÐ´ò¿ªÒ»¸öÒÑ´ò¿ªµÄÎļþ¾ä±ú ʱ²»»áÕâÑù¡£¸ü¶àϸ½Ú²Î¼û "I/ONjqLinuxÁªÃË NjqLinuxÁªÃË Operators" in perlop¡£"<>" ´Ó²»ÏÔʽ¹Ø±ÕÎļþ£¬Òò´ËÐкŻáÔÚ ARGVNjqLinuxÁªÃË NjqLinuxÁªÃË ÎļþÖ®¼ä³ÖÐøÔö³¤(²»¹ýÇë¿´¿´ "eof" in perlfunc ÖеÄÀý×Ó)¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË Ä㻹¿ÉÒÔÓà "HANDLE->input_line_number(EXPR)"NjqLinuxÁªÃË NjqLinuxÁªÃË ·ÃÎÊÒ»¸ö¸ø¶¨Îļþ¾ä±úµÄNjqLinuxÁªÃË NjqLinuxÁªÃË ÐмÆÊýÆ÷£¬ÕâÑù¾ÍÎÞÐèµ£ÐÄ×îºó·ÃÎʵÄÊÇÄĸö¾ä±úÁË¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË (Öú¼Ç£ººÜ¶à³ÌÐòÓá°.¡±±íʾµ±Ç°Ðкš£)NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË IO::Handle->input_record_separator(EXPR)NjqLinuxÁªÃË NjqLinuxÁªÃË $INPUT_RECORD_SEPARATORNjqLinuxÁªÃË NjqLinuxÁªÃË $RSNjqLinuxÁªÃË NjqLinuxÁªÃË $/ ΪÊäÈë¼Ç¼·Ö¸ô·û£¬Ä¬ÈÏΪ»»Ðзû¡£¸Ã±äÁ¿»áÓ°Ïì PerlNjqLinuxÁªÃË NjqLinuxÁªÃË ¶Ô¡°ÐС±ÕâÒ»¸ÅÄî µÄÀí½â¡£Æä¹¦ÄÜÀàËÆÓÚ awk ÖÐµÄ RSNjqLinuxÁªÃË NjqLinuxÁªÃË ±äÁ¿£¬ÔÚ±»ÉèÖÃΪ¿Õ×Ö·û´®Ê±Í¬ÑùNjqLinuxÁªÃË NjqLinuxÁªÃË »á½«¿Õ°×ÐÐ×÷ΪÖÕÖ¹±êÖ¾¡£(¿Õ°×Ðв»Äܺ¬ÓÐÈκοոñ»òÖÆ±í·û¡£)NjqLinuxÁªÃË NjqLinuxÁªÃË Äã¿ÉÒÔ½«ÆäNjqLinuxÁªÃË NjqLinuxÁªÃË ÉèÖÃΪº¬Óжà¸ö×Ö·ûµÄ×Ö·û´®£¬ÒÔÆ¥Åä¶à×Ö·ûµÄÖÕÖ¹±êÖ¾£»Ò²¿ÉÒÔÉèΪNjqLinuxÁªÃË NjqLinuxÁªÃË "undef" ÒÔ±ãÒ»Ö±¶Áµ½Îļþ½áÊø¡£µ±Îļþº¬ÓÐÁ¬ÐøµÄ¿Õ°×ÐÐʱ£¬°ÑËüÉèΪNjqLinuxÁªÃË NjqLinuxÁªÃË "\n\n" ºÍÉèΪ "" ÓÐÉÙÐí²»Í¬£ºÉèΪ ""NjqLinuxÁªÃË NjqLinuxÁªÃË »á°ÑÁ½¸ö»ò¸ü¶àÁ¬ÐøµÄ¿Õ°×ÐÐÊÓΪµ¥¸ö ¿Õ°×ÐУ»¶øÉèΪ "\n\n"NjqLinuxÁªÃË NjqLinuxÁªÃË ÔòÖ»ÊÇäĿµØ¼Ù¶¨ÆäºóÊäÈëµÄ×Ö·ûÊôÓÚÏÂÒ»¶Î£¬¼´Ê¹NjqLinuxÁªÃË NjqLinuxÁªÃË ÕâЩ×Ö·ûÊÇ»»ÐзûÒ²Ò»Ñù¡£(Öú¼Ç£ºÔÚÒýÓÃÊ«¾äʱ»áÓà /NjqLinuxÁªÃË NjqLinuxÁªÃË ×÷ΪÐмäµÄ·Ö¸ô¡£)NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË local $/; # enable "slurp" modeNjqLinuxÁªÃË NjqLinuxÁªÃË local $_ = <FH>; # whole file now hereNjqLinuxÁªÃË NjqLinuxÁªÃË s/\n[ \t]+/ /g;NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË Çмǣº$/ µÄÄÚÈÝÊÇÒ»¸ö×Ö·û´®£¬¶ø²»ÊÇÕýÔò±í´ïʽ¡£awkNjqLinuxÁªÃË NjqLinuxÁªÃË µÃÔÚijЩ·½Ãæ¸Ä½ø Ò»ÏÂÁË¡£:-)NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ½« $/NjqLinuxÁªÃË NjqLinuxÁªÃË ÉèΪÕûÊý¡¢´æÓÐÕûÊýµÄ±êÁ¿»ò¿Éת»»³ÉÕûÊýµÄ±êÁ¿ÕâЩֵµÄÒýÓÃʱ£¬PerlNjqLinuxÁªÃË NjqLinuxÁªÃË »á³¢ÊÔ¶ÁÈë¼Ç¼¶ø²»ÊÇÐУ¬×î´ó¼Ç¼³¤¶È¾ÍÊÇÒýÓõÄÄǸöÕûÊý¡£Òò´ËÕâ¶ÎNjqLinuxÁªÃË NjqLinuxÁªÃË ´úÂ룺NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË local $/ = \32768; # or \"32768", or \$var_containing_32768NjqLinuxÁªÃË NjqLinuxÁªÃË open my $fh, $myfile or die $!;NjqLinuxÁªÃË NjqLinuxÁªÃË local $_ = <$fh>;NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË »á´Ó FILE ¶ÁȡһÌõ²»³¤ÓÚ 32768NjqLinuxÁªÃË NjqLinuxÁªÃË ×ֽڵļǼ¡£Èç¹ûÄã²»ÊÇÔÚ¶Áȡһ¸öÃæÏò¼Ç¼ µÄÎļþ(»òÕßËùÓÃµÄ OSNjqLinuxÁªÃË NjqLinuxÁªÃË Ã»ÓÐÃæÏò¼Ç¼µÄÎļþÀàÐÍ)£¬ÄǺܿÉÄÜÿ´Î¶ÁÈ¡¶¼µÃµ½Ò»NjqLinuxÁªÃË NjqLinuxÁªÃË Õû¿éµÄÊý¾Ý¡£ÈôijÌõ¼Ç¼±ÈÄãËùÉèÖõļǼ³¤¶È»¹´ó£¬¾Í»á°Ñ¸Ã¼Ç¼²ð³ÉNjqLinuxÁªÃË NjqLinuxÁªÃË Èô¸ÉƬ ·µ»Ø¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ÔÚ VMS ÉÏ£¬¼Ç¼¶ÁÈ¡ÊÇÓà "sysread"NjqLinuxÁªÃË NjqLinuxÁªÃË µÄµÈ¼ÛÎïÍê³ÉµÄ£¬Òò´Ë×îºÃ²»ÒªÔÚͬһ¸öNjqLinuxÁªÃË NjqLinuxÁªÃË ÎļþÉÏ»ìºÏʹÓüǼºÍ·Ç¼Ç¼¶Á¡£(Õⲻ̫¿ÉÄܳÉΪÎÊÌ⣬ÒòΪÈκÎÄãÏë?NjqLinuxÁªÃË NjqLinuxÁªÃË Ô¼Ç¼ģÊ?¶ÁÈ¡µÄÎļþÒ²Ðí¶¼²»ÄÜÔÚÐÐģʽÏÂÓá£) ·Ç VMS ϵͳÓÃÆÕͨNjqLinuxÁªÃË NjqLinuxÁªÃË I/O ½øÐжÁÈ¡£¬Òò´Ë ÔÚÒ»¸öÎļþÖлìºÏ¼Ç¼ºÍ·Ç¼Ç¼¶ÁÊǰ²È«µÄ¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ²Î¼û "Newlines" in perlport ÒÔ¼° $.¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË HANDLE->autoflush(EXPR)NjqLinuxÁªÃË NjqLinuxÁªÃË $OUTPUT_AUTOFLUSHNjqLinuxÁªÃË NjqLinuxÁªÃË $| Èô½«¸Ã±äÁ¿ÉèΪ·ÇÁãÖµ£¬¾Í»áÁ¢¿ÌÇ¿ÖÆ½øÐÐˢУ¬²¢ÇÒµ±Ç°Ñ¡ÖеÄÊä³öͨNjqLinuxÁªÃË NjqLinuxÁªÃË µÀÔÚÿ´Î ´òÓ¡»òд֮ºó¶¼»á½øÐÐˢС£Ä¬ÈÏֵΪ 0NjqLinuxÁªÃË NjqLinuxÁªÃË (²»¹ÜÑ¡ÖеÄͨµÀʵ¼ÊÉÏÊÇ·ñ±»ÏµÍ³Ëù»º³å£¬ $| Ö»ÊǸæËßÄã PerlNjqLinuxÁªÃË NjqLinuxÁªÃË ÊÇ·ñÔÚÿ´ÎдÍêÖ®ºóÏÔʽˢÐÂ)¡£µäÐÍÇé¿öÏ£¬Èô STDOUTNjqLinuxÁªÃË NjqLinuxÁªÃË µÄÊä³öÊÇÖÕ¶ËÔòÊÇÐлº³åµÄ£¬·ñÔò¾ÍÊǿ黺³å¡£ÉèÖøñäÁ¿ÔÚÏò¹ÜµÀ»òÌ×NjqLinuxÁªÃË NjqLinuxÁªÃË ½Ó×ÖÊä³ö ʱºÜÓÐÓ㬱ÈÈçÄãÕýÔÚ rsh ÏÂÔËÐÐÒ»¸ö PerlNjqLinuxÁªÃË NjqLinuxÁªÃË ³ÌÐò²¢ÇÒÏëÔÚÊä³öʱÂíÉϾÍÄÜ¿´µ½NjqLinuxÁªÃË NjqLinuxÁªÃË Êä³öÄÚÈÝ¡£¸Ã±äÁ¿²»Ó°ÏìÊäÈ뻺³å¡£¹ØÓÚÊäÈ뻺³åÇë²Î¼û "getc" inNjqLinuxÁªÃË NjqLinuxÁªÃË perlfunc¡£ (Öú¼Ç£ºwhen you want your pipes to be piping hot.)NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË IO::Handle->output_field_separator EXPRNjqLinuxÁªÃË NjqLinuxÁªÃË $OUTPUT_FIELD_SEPARATORNjqLinuxÁªÃË NjqLinuxÁªÃË $OFSNjqLinuxÁªÃË NjqLinuxÁªÃË $, Ϊ print µÄÊä³öÓò·Ö¸ô·û¡£Í¨³£ printNjqLinuxÁªÃË NjqLinuxÁªÃË ²»¾ÈκÎÐÞÊξÍÊä³öËüµÄ²ÎÊý£¬Òª µÃµ½¸üÏñ awkNjqLinuxÁªÃË NjqLinuxÁªÃË µÄÐÐΪ£¬¿ÉÒÔ½«¸Ã±äÁ¿ÉèÖÃ³ÉºÍ awk µÄ OFS ±äÁ¿Ò»ÑùNjqLinuxÁªÃË NjqLinuxÁªÃË £¬ÒÔÖ¸¶¨ÓòÖ®¼ä´òӡʲô¡£(Öú¼Ç£ºµ± printNjqLinuxÁªÃË NjqLinuxÁªÃË Óï¾äÀïÓС°,¡±Ê±»á´òÓ¡µÄ¶«Î÷¡£)NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË IO::Handle->output_record_separator EXPRNjqLinuxÁªÃË NjqLinuxÁªÃË $OUTPUT_RECORD_SEPARATORNjqLinuxÁªÃË NjqLinuxÁªÃË $ORSNjqLinuxÁªÃË NjqLinuxÁªÃË $\ Ϊ print µÄÊä³ö¼Ç¼·Ö¸ô·û¡£Í¨³£ printNjqLinuxÁªÃË NjqLinuxÁªÃË ¼òµ¥µØÔÑùÊä³öËüµÄ²ÎÊý£¬²»Ôö¼ÓNjqLinuxÁªÃË NjqLinuxÁªÃË ÈκνáβµÄ»»Ðзû»òÆäËû±íÕ÷¼Ç¼½áÊøµÄ×Ö·û´®¡£ÒªµÃµ½¸üÏñ awkNjqLinuxÁªÃË NjqLinuxÁªÃË µÄÐÐΪ£¬ ¿ÉÒÔ½«¸Ã±äÁ¿ÉèΪͬ awk µÄ ORS ±äÁ¿Ò»Ñù£¬ÒÔÖ¸¶¨ÔÚ printNjqLinuxÁªÃË NjqLinuxÁªÃË µÄ½áβÊä³ö ʲô¡£(Öú¼Ç£ºÉèÖà $\ ¶ø²»ÊÇÔÚ printNjqLinuxÁªÃË NjqLinuxÁªÃË ½áβ¼Ó¡°\n¡±¡£ÁíÍ⣬Ëü³¤µÃºÍ $/ ºÜÏñ£¬µ«È´ÊÇÄã´Ó PerlNjqLinuxÁªÃË NjqLinuxÁªÃË ÄÇÀïÄ᰻ء±µÄ¶«Î÷¡£) (Òë×¢£º¡°»Ø¡±ÔÎÄΪNjqLinuxÁªÃË NjqLinuxÁªÃË µ¥´Ê¡°back¡±£¬»¹Ö¸´ú·´Ð±¸Ü¡°backslash¡±£¬ÆðÒ»ÓïË«¹Ø×÷Óá£)NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË $LIST_SEPARATORNjqLinuxÁªÃË NjqLinuxÁªÃË $" ¸Ã±äÁ¿Í¬ $,NjqLinuxÁªÃË NjqLinuxÁªÃË ÀàËÆ£¬µ«Ó¦ÓÃÓÚÏòË«ÒýºÅÒýÆðµÄ×Ö·û´®(»òÀàËÆµÄÄÚ²å×Ö·û´®)NjqLinuxÁªÃË NjqLinuxÁªÃË ÖÐÄÚ²åÊý×éºÍÇÐÆ¬ÖµµÄ³¡ºÏ¡£Ä¬ÈÏΪһ¸ö¿Õ¸ñ¡£(Öú¼Ç£ºÎÒ¾õµÃÏÔ¶øÒ×¼û?NjqLinuxÁªÃË NjqLinuxÁªÃË ?NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË $SUBSCRIPT_SEPARATORNjqLinuxÁªÃË NjqLinuxÁªÃË $SUBSEPNjqLinuxÁªÃË NjqLinuxÁªÃË $; ΪģÄâ¶àάÊý×éʱµÄϱê·Ö¸ô·û¡£Èç¹ûÄãÕâÑùÒýÓÃÒ»¸öÉ¢ÁÐÔªËØNjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË $foo{$a,$b,$c}NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË Êµ¼ÊÉÏÒâ˼¾ÍÊÇNjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË $foo{join($;, $a, $b, $c)}NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË µ«ÊDZðÕâôдNjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË @foo{$a,$b,$c} # a slice--note the @NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ËüµÄÒâ˼ÊÇNjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ($foo{$a},$foo{$b},$foo{$c})NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË Ä¬ÈÏΪ¡°\034¡±£¬Í¬ awk µÄ SUBSEPNjqLinuxÁªÃË NjqLinuxÁªÃË Ò»Ñù¡£Èç¹ûÄãµÄÉ¢Áмü°üº¬¶þ½øÖÆÊý¾Ý£¬ ¿ÉÄÜ $;NjqLinuxÁªÃË NjqLinuxÁªÃË ¾Íû·¨°üº¬Èκοɿ¿µÄÖµÁË¡£NjqLinuxÁªÃË NjqLinuxÁªÃË (Öú¼Ç£º¶ººÅ(Óï·¨ÉϵÄϱê·Ö¸ô·û)Êǰë¸ö·ÖºÅ¡£Êǰ¡£¬ÎÒÖªµÀÕâÍêȫû?NjqLinuxÁªÃË NjqLinuxÁªÃË Ð˵·þÁ?£¬µ« $, ÒѾ±»ÓÃ×ö¸üÖØÒªµÄÓÃ;ÁË¡£)NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË Ç뿼ÂÇÏñ perllol Àï˵Ã÷µÄÄÇÑùʹÓá°ÕæÕýµÄ¡±¶àάÊý×é¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË $# Ϊ´òÓ¡ÊýֵʱµÄÊä³ö¸ñʽ¡£¸Ã±äÁ¿ÊÇ awk ÖÐ OFMTNjqLinuxÁªÃË NjqLinuxÁªÃË ±äÁ¿Ò»¸ö´Ö²ÚµÄÄ£·Â³¢ÊÔ¡£ ²»¹ýȷʵÓжÎʱ¼ä awk ºÍ PerlNjqLinuxÁªÃË NjqLinuxÁªÃË ÔÚʲô¿ÉÒÔ¿´³ÉÊýÖµµÄ¸ÅÄîÉÏÓÐËù·ÖÆç¡£ËüµÄ ³õʼֵÊÇ¡°%.*n*g¡±£¬*n*NjqLinuxÁªÃË NjqLinuxÁªÃË ÊÇÄãËùÓÃϵͳÉÏ float.h ÖÐ DBL_DIG ºêµÄÖµ¡£ Õâͬ awk µÄĬÈÏ OFMTNjqLinuxÁªÃË NjqLinuxÁªÃË ÉèÖá°%.6g¡±²»Ò»Ñù£¬Òò´ËÄãÐèÒªÏÔʽÉ趨 $# ÒԱ㠵õ½ºÍ awkNjqLinuxÁªÃË NjqLinuxÁªÃË Ò»ÑùµÄ½á¹û¡£(Öú¼Ç£º# ÊÇÊýÖµ±êÖ¾¡£)NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ²»½¨ÒéʹÓà $# ±äÁ¿¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË HANDLE->format_page_number(EXPR)NjqLinuxÁªÃË NjqLinuxÁªÃË $FORMAT_PAGE_NUMBERNjqLinuxÁªÃË NjqLinuxÁªÃË $% Ϊµ±Ç°Ñ¡ÖеÄÊä³öͨµÀµÄµ±Ç°Ò³Â롣ͬ¸ñʽÅäºÏʹÓᣠ(Öú¼Ç£º% ÊÇNjqLinuxÁªÃË NjqLinuxÁªÃË nroff ÖеÄÒ³Âë¡£)NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË HANDLE->format_lines_per_page(EXPR)NjqLinuxÁªÃË NjqLinuxÁªÃË $FORMAT_LINES_PER_PAGENjqLinuxÁªÃË NjqLinuxÁªÃË $= Ϊµ±Ç°Ñ¡ÖеÄÊä³öͨµÀµÄµ±Ç°Ò³³¤¶È(¿É´òÓ¡µÄÐÐÊý)¡£Ä¬ÈÏΪ 60¡£NjqLinuxÁªÃË NjqLinuxÁªÃË Í¬¸ñʽÅäºÏʹÓᣠ(Öú¼Ç£º·ûºÅ = ÓÉÁ½¸öˮƽÐÐ×é³É¡£)NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË HANDLE->format_lines_left(EXPR)NjqLinuxÁªÃË NjqLinuxÁªÃË $FORMAT_LINES_LEFTNjqLinuxÁªÃË NjqLinuxÁªÃË $- Ϊµ±Ç°Ñ¡ÖеÄÊä³öͨµÀµÄÒ³Ãæ²ÐÁôÐÐÊý¡£Í¬¸ñʽÅäºÏʹÓá£NjqLinuxÁªÃË NjqLinuxÁªÃË (Öú¼Ç£ºÒ³ÃæÐÐÊý - ÒÑ´òÓ¡ÐÐÊý¡£)NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË @LAST_MATCH_STARTNjqLinuxÁªÃË NjqLinuxÁªÃË @- $-[0] ÊÇ×î½üÒ»´Î³É¹¦Æ¥ÅäµÄÆðÊ¼Æ«ÒÆÁ¿¡£ "$-["*n*"]" ÊÇÓÉµÚ *n*NjqLinuxÁªÃË NjqLinuxÁªÃË ¸ö×ÓģʽËùÆ¥ÅäµÄ×Ó×Ö·û´®µÄÆðÊ¼Æ«ÒÆÁ¿£¬NjqLinuxÁªÃË NjqLinuxÁªÃË Èô¶ÔÓ¦µÄ×ÓģʽûÓÐÆ¥ÅäÔòȡΪ undef¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË Òò´Ë¶Ô $_ ½øÐÐÆ¥ÅäÖ®ºó£¬$& ºÍ "substr $_, $-[0], $+[0] - $-[0]"NjqLinuxÁªÃË NjqLinuxÁªÃË ÊÇÒ»ÑùµÄ¡£ÀàËÆµØ£¬Èô $-[n] ÒѶ¨Ò壬Ôò $*n* ͬ "substr $_, $-[n],NjqLinuxÁªÃË NjqLinuxÁªÃË $+[n] - $-[n]" ÊÇÒ»ÑùµÄ£¬$+ Ò²ºÍ "substr $_, $-[$#-], $+[$#-] -NjqLinuxÁªÃË NjqLinuxÁªÃË $-[$#-]" Ïàͬ¡£¿ÉÒÔÓà $#- ÕÒ³ö×î½üÒ»´Î³É¹¦Æ¥ÅäNjqLinuxÁªÃË NjqLinuxÁªÃË ÖÐ×îºóÒ»¸öÆ¥ÅäµÄ×Ó×é¡£ÓëÖ®Ïà¶ÔµÄ $#+ ÊÇÄÇ´ÎÆ¥ÅäËùÓÃÕýÔò±í´ïʽÖÐNjqLinuxÁªÃË NjqLinuxÁªÃË ×Ó×éµÄÊýÄ¿£¬¶ÔÓ¦µÄÊÇ "@+"¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ¸ÃÊý×é´æ·Åµ±Ç°»î¶¯µÄ¶¯Ì¬×÷ÓÃÓòÖÐ×î½ü³É¹¦µÄ×ÓÆ¥Å俪ʼ´¦µÄÆ«ÒÆÁ¿¡£NjqLinuxÁªÃË NjqLinuxÁªÃË $-[0] ÊÇÕû¸öÆ¥ÅäÔÚ×Ö·û´®ÖпªÊ¼´¦µÄÆ«ÒÆÁ¿£¬Êý×éÖÐµÚ *n* ¸öÔªËØNjqLinuxÁªÃË NjqLinuxÁªÃË ´æÓÐµÚ *n* ¸ö×ÓÆ¥ÅäµÄÆ«ÒÆÁ¿£¬Òò´Ë $-[1] ÊÇ $1 ¿ªÊ¼´¦µÄÎ»ÒÆ£¬NjqLinuxÁªÃË NjqLinuxÁªÃË $-[2] ÊÇ $2 ¿ªÊ¼´¦µÄÎ»ÒÆ£¬ÒÔ´ËÀàÍÆ¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ÔÚ¶Ôij¸ö±äÁ¿ $var ½øÐÐÆ¥Åäºó£ºNjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË $` ºÍ "substr($var, 0, $-[0])" ÏàͬNjqLinuxÁªÃË NjqLinuxÁªÃË $& ºÍ "substr($var, $-[0], $+[0] - $-[0])" ÏàͬNjqLinuxÁªÃË NjqLinuxÁªÃË $' ºÍ "substr($var, $+[0])" ÏàͬNjqLinuxÁªÃË NjqLinuxÁªÃË $1 ºÍ "substr($var, $-[1], $+[1] - $-[1])" ÏàͬNjqLinuxÁªÃË NjqLinuxÁªÃË $2 ºÍ "substr($var, $-[2], $+[2] - $-[2])" ÏàͬNjqLinuxÁªÃË NjqLinuxÁªÃË $3 ºÍ "substr $var, $-[3], $+[3] - $-[3])" ÏàͬNjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË HANDLE->format_name(EXPR)NjqLinuxÁªÃË NjqLinuxÁªÃË $FORMAT_NAMENjqLinuxÁªÃË NjqLinuxÁªÃË $~ Ϊµ±Ç°±»Ñ¡ÖÐÊä³öͨµÀµÄµ±Ç°±¨±í¸ñʽÃû³Æ¡£Ä¬ÈÏΪÎļþ¾ä±úÃû¡£(Öú¼Ç?NjqLinuxÁªÃË NjqLinuxÁªÃË ?^ µÄÐֵܡ£)NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË HANDLE->format_top_name(EXPR)NjqLinuxÁªÃË NjqLinuxÁªÃË $FORMAT_TOP_NAMENjqLinuxÁªÃË NjqLinuxÁªÃË $^ Ϊµ±Ç°±»Ñ¡ÖÐÊä³öͨµÀµÄµ±Ç°Ò³Ã¼¸ñʽÃû³Æ¡£Ä¬ÈÏΪÎļþ¾ä±úÃûºó¼ÓNjqLinuxÁªÃË NjqLinuxÁªÃË _TOP¡£ (Öú¼Ç£ºÖ¸Ïòҳü¡£)NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË IO::Handle->format_line_break_characters EXPRNjqLinuxÁªÃË NjqLinuxÁªÃË $FORMAT_LINE_BREAK_CHARACTERSNjqLinuxÁªÃË NjqLinuxÁªÃË $: ÊÇÒ»×é×Ö·û£¬×Ö·û´®¿ÉÒÔÔÚÕâЩ×Ö·ûºó¶ÏÐÐÒÔÌî³ä¸ñʽÖеÄÁ¬ÐøÓò(ÒÔ ^NjqLinuxÁªÃË NjqLinuxÁªÃË ¿ªÊ¼)¡£ ĬÈÏΪ " \n-"£¬Ê¹×Ö·û´®ÄÜÔÚ¿Õ°×»òÁ¬×Ö·û´¦¶Ï¿ª¡£NjqLinuxÁªÃË NjqLinuxÁªÃË (Öú¼Ç£ºÊ«Öеġ°Ã°ºÅ¡±ÊÇÒ»ÐеÄÒ»²¿·Ö¡£)NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË IO::Handle->format_formfeed EXPRNjqLinuxÁªÃË NjqLinuxÁªÃË $FORMAT_FORMFEEDNjqLinuxÁªÃË NjqLinuxÁªÃË $^L ÍËֽʱ¸ñʽӦÊä³öµÄÄÚÈÝ¡£Ä¬ÈÏΪ \f¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË $ACCUMULATORNjqLinuxÁªÃË NjqLinuxÁªÃË $^A write() ¶Ô format() ÐеÄÀÛ¼ÓÆ÷µÄµ±Ç°Öµ¡£¸ñʽ»áµ÷Óà formline()NjqLinuxÁªÃË NjqLinuxÁªÃË ²¢½«Æä½á¹û·ÅÈë $^A¡£ÔÚµ÷ÓöÔÓ¦µÄ¸ñʽ֮ºó£¬write() ½« $^ANjqLinuxÁªÃË NjqLinuxÁªÃË µÄÄÚÈÝ´òÓ¡³öÀ´²¢Çå¿ÕÖ®¡£ Òò´ËÄãÓÀÔ¶²»¿ÉÄÜ¿´µ½ $^ANjqLinuxÁªÃË NjqLinuxÁªÃË µÄÄÚÈÝ£¬³ý·Ç×Ô¼ºÖ±½Óµ÷Óà formline() ²¢²é¿´¸Ã±äÁ¿ ¡£²Î¼û perlformNjqLinuxÁªÃË NjqLinuxÁªÃË ºÍ "formline()" in perlfunc¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË $CHILD_ERRORNjqLinuxÁªÃË NjqLinuxÁªÃË $? ÓÉ×î½üµÄ¹ÜµÀ¹Ø±Õ¡¢·´ÒýºÅ(``)ÃüÁî¡¢³É¹¦µ÷Óà wait() ºÍ waitpid()NjqLinuxÁªÃË NjqLinuxÁªÃË »òÕß system() ²Ù×÷·û·µ»ØµÄ״̬ÐÅÏ¢¡£Ëü¾ÍÊÇÓÉ wait()NjqLinuxÁªÃË NjqLinuxÁªÃË ÏµÍ³µ÷Ó÷µ»ØµÄ 16 λ״̬×ÖNjqLinuxÁªÃË NjqLinuxÁªÃË (»òÊÇÓÉÆäËûÐÅÏ¢×éºÏ¶ø³ÉµÄÀàËÆÖµ)¡£Òò´Ë£¬×Ó½ø³ÌµÄÍ˳öֵʵ¼ÊÉÏÊÇNjqLinuxÁªÃË NjqLinuxÁªÃË ("$? >> 8")£¬"$? & 127" ¸ø³öÁ˵¼Ö½ø³Ì½áÊøµÄÐźŴúÂë(Èç¹û´æÔÚ)£¬NjqLinuxÁªÃË NjqLinuxÁªÃË ¶ø "$? & 128" »á±¨¸æÊÇ·ñ²úÉúÁËÄÚºËת´¢¡£(Öú¼Ç£ºÍ¬ sh ºÍ kshNjqLinuxÁªÃË NjqLinuxÁªÃË ÀàËÆ¡£)NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ÁíÍâÈç¹û C ÖÐÖ§³Ö "h_errno" ±äÁ¿£¬ÔÚÈÎÒâ "gethost*()"NjqLinuxÁªÃË NjqLinuxÁªÃË º¯Êýʧ°Üʱ£¬¸Ã±äÁ¿ µÄÖµ½«»áͨ¹ý $? ·µ»Ø¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË Èç¹ûÒѾΪ "SIGCHLD" °²×°ÁËÒ»¸öÐźŴ¦ÀíÆ÷£¬ÄÇôÔÚ´¦ÀíÆ÷Ö®Íâ $?NjqLinuxÁªÃË NjqLinuxÁªÃË µÄֵͨ³£ ÊÇÓÐÎÊÌâµÄ¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ÔÚ "END" ×Ó³ÌÐòÀ$? º¬Óм´½«½»¸ø "exit()" µÄÖµ¡£¿ÉÒÔÔÚ "END"NjqLinuxÁªÃË NjqLinuxÁªÃË ×Ó³ÌÐò ÖÐÐÞ¸Ä $? ÒÔ´ïµ½¸Ä±ä³ÌÐòÍ˳ö״̬µÄЧ¹û¡£ÀýÈ磺NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË END {NjqLinuxÁªÃË NjqLinuxÁªÃË $? = 1 if $? == 255; # die would make it 255NjqLinuxÁªÃË NjqLinuxÁªÃË } NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ÔÚ VMS ϵͳÏ£¬Ö¸Ê¾·û "use vmsish 'status'" ʹµÃ $? ·´Ó³Êµ¼ÊµÄNjqLinuxÁªÃË NjqLinuxÁªÃË VMS Í˳ö ״̬£¬¶ø²»ÊÇĬÈÏµÄ¶Ô POSIX ״̬µÄÄ£Ä⣻ϸ½Ú¼û "$?" inNjqLinuxÁªÃË NjqLinuxÁªÃË perlvms¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË Áí¼û ´íÎóָʾÆ÷¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ${^ENCODING}NjqLinuxÁªÃË NjqLinuxÁªÃË Îª EncodeNjqLinuxÁªÃË NjqLinuxÁªÃË ¶ÔÏóµÄ*¶ÔÏóÒýÓÃ*£¬ÓÃÀ´½«Ô´´úÂëת»»³ÉͳһÂë¡£¶à¿÷ÓÐÁ˸ñäÁ¿£¬NjqLinuxÁªÃË NjqLinuxÁªÃË ÄãµÄ Perl ½Å±¾²Å²»»á±»Ç¿ÖÆÎª UTF-8 ±àÂ롣ĬÈÏΪNjqLinuxÁªÃË NjqLinuxÁªÃË *undef*¡£¾ø¶Ô²»½¨Òé¶Ô ¸Ã±äÁ¿½øÐÐÖ±½Ó²Ù×÷¡£Ï¸½Ú¼û encoding¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË $OS_ERRORNjqLinuxÁªÃË NjqLinuxÁªÃË $ERRNONjqLinuxÁªÃË NjqLinuxÁªÃË $! Èç¹û°´ÊýֵʹÓøñäÁ¿£¬¾Í»áµÃµ½ "errno"NjqLinuxÁªÃË NjqLinuxÁªÃË ±äÁ¿µÄµ±Ç°Öµ£»»»¾ä»°Ëµ£¬Èç¹ûNjqLinuxÁªÃË NjqLinuxÁªÃË Ä³¸öϵͳ»òÕ߿⺯Êýµ÷ÓÃʧ°ÜÁË£¬¾Í»áÉèÖøñäÁ¿¡£ÕâÒâζ×Å $!NjqLinuxÁªÃË NjqLinuxÁªÃË µÄÖµ½öµ± *½ô½Ó*ÔÚÒ»¸öʧ°ÜÖ®ºóʱ²ÅÓÐÒâÒ壺NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË if (open(FH, $filename)) {NjqLinuxÁªÃË NjqLinuxÁªÃË # Here $! is meaningless.NjqLinuxÁªÃË NjqLinuxÁªÃË ...NjqLinuxÁªÃË NjqLinuxÁªÃË } else {NjqLinuxÁªÃË NjqLinuxÁªÃË # ONLY here is $! meaningful.NjqLinuxÁªÃË NjqLinuxÁªÃË ...NjqLinuxÁªÃË NjqLinuxÁªÃË # Already here $! might be meaningless.NjqLinuxÁªÃË NjqLinuxÁªÃË }NjqLinuxÁªÃË NjqLinuxÁªÃË # Since here we might have either success or failure,NjqLinuxÁªÃË NjqLinuxÁªÃË # here $! is meaningless.NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ÉÏÊöµÄ*ÎÞÒâÒå*´ú±íÈκζ«Î÷£ºÁã¡¢·ÇÁã¡¢"undef"¡£³É¹¦µÄϵͳ»ò¿âº¯?NjqLinuxÁªÃË NjqLinuxÁªÃË ?µ÷Óò»»á½«¸Ã±äÁ¿ÖØÖÃΪÁã¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË If used as a string, yields the corresponding system errorNjqLinuxÁªÃË NjqLinuxÁªÃË string. You can assign a number to $! to set *errno* if, forNjqLinuxÁªÃË NjqLinuxÁªÃË instance, you want "$!" to return the string for error *n*, orNjqLinuxÁªÃË NjqLinuxÁªÃË you want to set the exit value for the die() operator.NjqLinuxÁªÃË NjqLinuxÁªÃË (Mnemonic: What just went bang?)NjqLinuxÁªÃË NjqLinuxÁªÃË Èô×÷Ϊ×Ö·û´®Ê¹Óã¬Ôò»á²úÉú¶ÔÓ¦µÄϵͳ´íÎó×Ö·û´®¡£¿ÉÒÔ¶Ô $!NjqLinuxÁªÃË NjqLinuxÁªÃË ¸³Ò»¸öÊý À´ÉèÖà *errno*£¬ÕâÑù¾ÍÄÜÓà "$!" µÃµ½´íÎó *n*NjqLinuxÁªÃË NjqLinuxÁªÃË ¶ÔÓ¦µÄ×Ö·û´®ÁË£¬Ò²¿ÉÒÔ ÓÃÀ´ÉèÖà die()NjqLinuxÁªÃË NjqLinuxÁªÃË ÔËËã·ûËùÓõÄÍ˳öÖµ¡£(Öú¼Ç£º¸Õ¸Õʲô¶«Î÷Õ¨ÁË£¿)NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË Áí¼û ´íÎóָʾÆ÷¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË %! µ± $! ÉèÖÃΪij¸öֵʱ "%!" µÄ¶ÔÓ¦ÔªËØ¼´ÎªÕæÖµ¡£ÀýÈ磬$!{ENOENT}NjqLinuxÁªÃË NjqLinuxÁªÃË ÎªÕæµ±ÇÒ½öµ± $! µÄµ±Ç°ÖµÎª "ENOENT"£»Ò²¾ÍÊÇ˵£¬Èô×îºóµÄ´íÎóÊÇNjqLinuxÁªÃË NjqLinuxÁªÃË "No such file orNjqLinuxÁªÃË NjqLinuxÁªÃË directory"(»òÆäËûµÈ¼ÛµÄ¶«Î÷£º²¢²»ÊÇËùÓвÙ×÷ϵͳ¶¼¸ø³öNjqLinuxÁªÃË NjqLinuxÁªÃË ÍêȫһÖµĴíÎ󣬵±È»Ò²²»¿ÉÄܶ¼ÊÇͬһÖÖÓïÑÔ)¡£Òª¼ì²éij¸öÌØ¶¨µÄ¼ü?NjqLinuxÁªÃË NjqLinuxÁªÃË ÚÄãµÄϵÍ?ÉÏÊÇ·ñÓÐÒâÒ壬¿ÉÒÔÓà "existsNjqLinuxÁªÃË NjqLinuxÁªÃË $!{the_key}"£»ÒªÈ¡µÃºÏ·¨¼üµÄÁÐ±í£¬¿ÉÒÔÓà "keys %!"¡£¸ü¶àÐÅÏ¢¼ûNjqLinuxÁªÃË NjqLinuxÁªÃË Errno£¬ÁíÍâ´ÓÇ°ÃæµÄÃèÊöÒ²¿ÉÒԵóö $! µÄÓÐЧ ·¶Î§¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË $EXTENDED_OS_ERRORNjqLinuxÁªÃË NjqLinuxÁªÃË $^E ͬµ±Ç°²Ù×÷ϵͳÏà¹ØµÄ´íÎóÐÅÏ¢¡£Ä¿Ç°¸Ã±äÁ¿½öÔÚ VMS¡¢OS/2 ºÍ Win32NjqLinuxÁªÃË NjqLinuxÁªÃË (ÒÔ¼° MacPerl)ÏÂͬ $! ÓÐËù²»Í¬¡£ÔÚËùÓÐÆäËûƽ̨ÉÏ£¬$^E ×ÜÊÇºÍ $!NjqLinuxÁªÃË NjqLinuxÁªÃË Ò»Ñù¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ÔÚ VMS ϵͳÏ£¬$^E ÊÇ×î½üÒ»´Îϵͳ´íÎóµÄ VMS ״ֵ̬¡£Õâ±È $!NjqLinuxÁªÃË NjqLinuxÁªÃË ÌṩµÄ¹ØÓÚϵͳ´íÎóµÄÐÅÏ¢¸üΪÏ꾡¡£µ± $! ±»ÉèÖÃ³É EVMSERR ʱNjqLinuxÁªÃË NjqLinuxÁªÃË ¸Ã±äÁ¿ÓÈÎªÖØÒª¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ÔÚ OS/2 ϵͳÏ£¬$^E ±»ÉèÖÃΪ×î½üÒ»´Îͨ¹ý CRT »òÖ±½Óͨ¹ý PerlNjqLinuxÁªÃË NjqLinuxÁªÃË ½øÐÐµÄ OS/2 API µ÷ÓÃËù·µ»ØµÄ´íÎó´úÂë¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ÔÚ Win32 Ï£¬$^E ×ÜÊÇ·µ»ØÓÉ Win32 µ÷Óà "GetLastError()" Ëù±¨¸æNjqLinuxÁªÃË NjqLinuxÁªÃË µÄ´íÎóÐÅÏ¢£¬ËüÃèÊöµÄÊÇ·¢ÉúÔÚ Win32 API ÄÚ²¿µÄ×î½üÒ»´Î´íÎó¡£¶àÊýNjqLinuxÁªÃË NjqLinuxÁªÃË ÌØ¶¨ÓÚ Win32 µÄ³ÌÐò´úÂë»áͨ¹ý $^E ±¨¸æ´íÎ󣬶ø ANSI C ¼°Àà UnixNjqLinuxÁªÃË NjqLinuxÁªÃË µ÷ÓÃÔò»áÉèÖà "errno"£¬Òò´Ë´ó²¿·Ö¿ÉÒÆÖ²µÄ Perl ´úÂ붼ͨ¹ý $!NjqLinuxÁªÃË NjqLinuxÁªÃË ±¨¸æ´íÎó¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ÔÚ $! µÄÃèÊöÖÐÌáµ½µÄ¾¯¸æÒ»°ãÒ²ÊÊÓÃÓÚNjqLinuxÁªÃË NjqLinuxÁªÃË $^E¡£(Öú¼Ç£º¶îÍâµÄ´íÎó½âÊÍ¡£)NjqLinuxÁªÃË NjqLinuxÁªÃË (Òë×¢£ºÓ¢ÎÄÖС°¶îÍ⡱µÄµ¥´ÊΪ¡°Extra¡±¡£)NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË Áí¼û ´íÎóָʾÆ÷¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË $EVAL_ERRORNjqLinuxÁªÃË NjqLinuxÁªÃË $@ ×î½üÒ»¸ö eval() ÔËËã·û·µ»ØµÄ Perl Óï·¨´íÎóÏûÏ¢¡£ Èô $@NjqLinuxÁªÃË NjqLinuxÁªÃË ÊÇ¿Õ×Ö·û´®£¬Ôò×î½üÒ»´Î eval() ½øÐÐÁËÕýÈ·µÄ½âÎöºÍÖ´ÐÐ(NjqLinuxÁªÃË NjqLinuxÁªÃË µ«ÊÇÄãËù½øÐеIJÙ×÷¿ÉÄÜÒѾ°´ÕÕͨ³£µÄÐÎʽʧ°ÜÁË)¡£NjqLinuxÁªÃË NjqLinuxÁªÃË (Öú¼Ç£ºÓï·¨´íÎó·¢Éú¡°ÔÚ¡±ÄÄÀ)NjqLinuxÁªÃË NjqLinuxÁªÃË (Òë×¢£º·ûºÅ¡°@¡±ÎªÓ¢Îĵ¥´Ê¡°at¡±¼òд£¬ÒâΪ¡°ÔÚ¡¡¡±)NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË ¾¯¸æÏûÏ¢²»»á±»ÊÕ¼¯ÔڸñäÁ¿ÖС£µ«Äã¿ÉÒÔÏñºóÃæÃèÊöµÄÄÇÑù£¬Í¨¹ýÉèÖÃNjqLinuxÁªÃË NjqLinuxÁªÃË $SIG{__WARN__} ×Ô¼º½¨Á¢Ò»¸öÀý³ÌÀ´´¦Àí¾¯¸æ¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË Áí¼û ´íÎóָʾÆ÷¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË $PROCESS_IDNjqLinuxÁªÃË NjqLinuxÁªÃË $PIDNjqLinuxÁªÃË NjqLinuxÁªÃË $$ ÔËÐб¾½Å±¾µÄ Perl µÄ½ø³ÌºÅ¡£¸Ã±äÁ¿Ó¦ÊÓΪֻ¶ÁµÄ£¬²»¹ýÔÚ fork()NjqLinuxÁªÃË NjqLinuxÁªÃË µ÷Óà ʱ»á±»¸Ä±ä¡£(Öú¼Ç£ººÍ shell Ò»Ñù¡£)NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË Linux Óû§×¢Ò⣺ÔÚ Linux Ï£¬ C º¯Êý "getpid()" ºÍ "getppid()"NjqLinuxÁªÃË NjqLinuxÁªÃË ¶Ô ²»Í¬µÄÏ̷߳µ»Ø²»Í¬µÄÖµ¡£ÎªÁË¿ÉÒÆÖ²£¬¸ÃÐÐΪûÓз´Ó³ÔÚ $$NjqLinuxÁªÃË NjqLinuxÁªÃË À¸Ã±äÁ¿ µÄÖµÔÚÏ̼߳䱣³Ö²»±ä¡£Èç¹ûÄãÏëµ÷ÓõײãµÄNjqLinuxÁªÃË NjqLinuxÁªÃË "getpid()"£¬¿ÉÒÔʹÓà CPAN Ä£¿é "Linux::Pid"¡£NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË NjqLinuxÁªÃË $REAL_USER_IDNjqLinuxÁªÃË NjqLinuxÁªÃË $UIDNjqLinuxÁªÃË NjqLinuxÁªÃË $< ±¾½ø³ÌµÄʵ¼Ê uid¡£(Öú¼Ç£ºÈç¹ûÄãÓÃÁË setuid£¬ÄÇÃ´Õ | |