¡¡
PERL CGI¼ò½é¼°Ö¸Áîʾ·¶
Õª×Ô²ÌÆæÓñ¡¢Á¬Õñºº¡¢ÕÅÖ¾Ç¿Öø¡¶CGI±à³ÌÖ¸ÄÏ¡·µÚÁùÕÂ
Ϊ×ðÖØ×÷Õß°æÈ¨,Ö»×÷²¿·Ö½ÚÑ¡,ÒÔ×÷ÍÆ½éÖ®ÓÃ,
ÍÆ¼öÄú¹ºÂòÔÊéÔĶÁ!
6.1 PerlÓïÑÔ¼ò½é
¡¡¡¡Perl(Practical
Extraction and Report Language)½Ð×öÎÄ×Ö·ÖÎö±¨¸æÓïÑÔ¡£ÊÇÓÉÀÍÀû¡¤»ª¶û(Larry Wall)Ëù½¨Á¢³öÀ´µÄÓïÑÔ¡£ËûÉè¼ÆPerlʱµÄÕÜѧÊÇÒÔʵÓÃΪµÚÒ»ÓÅÏÈ,Ò²¾ÍÊÇÓïÑÔÈÝÒ×ʹÓÃ,ÓÐЧÂÊ,¶øÇÒÍêÕû¡£PerlÓïÑÔÖаüº¬ÁËC¡¢C++¡¢shell
script¡¢sed¡¢awkÕ⼸¸öÓïÑÔµÄÓï·¨,ËüÔʼµÄÄ¿µÄ¾ÍÊÇÓÃÀ´È¡´úUNIXÔÀ´sed/awkÓëscriptµÄ×éºÏ,ÓÃÀ´»ãÕûÐÅÏ¢,²úÉú±¨±íµÄÒ»¸ö¹¤¾ß³ÌÐòÓïÑÔ¡£ÇÒËæ×Ű汾µÄ¸Ä½ø,¹¦ÄÜÔ½À´Ô½Ç¿,ÏÖÔڵŦÄÜÒѾ³¬ºõÔÏÈÉè¼ÆÊ±µÄÏëÏó,¼¸ºõÈκÎʶ¼¿ÉÒÔ×öµ½,Ò²±ä³Éÿһ²¿¹¤×÷Õ¾±Ø±¸µÄ±ê×¼¹¤¾ßÁË¡£ÒòΪËü¶Ô×Ö·û´®ÓëÊý¾ÝÆÊÎö·½ÃæÓкÜÇ¿µÄ´¦ÀíÄÜÁ¦,ÓÈÆäÊÇÀûÓùØÁªÐÔÊý×éÀ´×÷CGIÓ¦ÓóÌÐòÆÊÎöÊäÈëÊý¾Ý´®,¿ÉÒÔ˵ÊÇÒ»¸ö¹¦ÄÜÇ¿´óµÄÓïÑÔ!
¡¡¡¡PerlÕâ¸ö½âÊÍʽµÄÓïÑÔ¶Ô¹úÄÚµÄʹÓÃÕßÀ´Ëµ¿ÉÄܶ¼ºÜİÉú,ÉõÖÁ¿ÉÄÜÌý¶¼Ã»Ìý¹ý,Ϊʲ֮ҪÓÃPerlÀ´Ð´CGIÓ¦ÓóÌÐòÄØ£¿ÒòΪPerlÓкÜÇ¿µÄ×Ö·û´®´¦ÀíÄÜÁ¦,ÔÚ¹úÍâºÜ¶à´¦ÀíÊý¾Ý¿âµÄÈí¼þ¿ÉÒÔÓÃPerlÀ´¹µÍ¨¡£ÔÚPerl5.0°æ±¾Öл¹Ôö¼ÓÃæÏò¶ÔÏóµÄÓ÷¨¡¢Ôö¼Ó¶Ô×Ö·û´®µÄ´¦ÀíÄÜÁ¦¡¢¿ÉÒÔ°ÑÕû¸öÎļþµ±³ÉÒ»¸ö×Ö·û´®À´´¦Àí¡¢²»ÊÜÈκÎÊý¾ÝµÄ´óСÏÞÖÆ¶øÖ»ÊÜ´æ´¢Æ÷µÄ´óС¡¢Äܹ»´¦ÀíDBMÊý¾Ý¿â¸ñʽµÄÊý¾ÝÒ²Äܹ»´¦Àí¶þ½øÖƵÄÊý¾ÝµÈµÈ,¸üÖØÒªµÄÊÇPerl»¹¿ÉÒÔÔÚUnix¡¢WindowsNT¡¢Windows95¡¢Dos¡¢Linux¡¢FreeBSD¡¢OS2¡¢MacitoshµÈ²Ù×÷ϵͳÖÐʹÓá£Ä¿Ç°»¹¿ÉÒÔÓÃPerlÀ´ºÍһЩÊý¾Ý¿âÈí¼þ¹µÍ¨,ÔÚ¹úÍâһЩ¹¦ÄÜÇ¿´óµÄCGIÓ¦ÓóÌÐò¼¸ºõ¶¼ÊÇÓÃPerlÓïÑÔÀ´µ±Ö÷½Ç!¶ÁÕß¿´µ½ÕâÀïÒ»¶¨»á¾õµÃ¹¦ÄÜÕâÑùÇ¿´óµÄÓïÑÔPerlÒ»¶¨ºÜÄÑѧ!ÕâÄú¾Í´ó´íÌØ´íÀ²,PerlÊǺÜÈÝÒ×ÉÏÊÖµÄ,ËüµÄÓï·¨ºÍCÓïÑԺܽӽü,¶ÔÓÚÔ±¾ÊìϤCÓïÑÔµÄÈËÀ´Ëµ,PerlÊǺÜÈÝÒ×ÉÏÊÖµÄ,Ö»ÒªÓÐÒ»µãCÓïÑԵĻù´¡,ÔÙ¼ÓÉϼ¸¸öСʱµÄѧϰʱ¼ä¾Í¿ÉÒÔºÜÇáÒ×µØÓÃPerlÓïÑÔдһ¸ö¼òµ¥µÄCGIÓ¦ÓóÌÐò,ÖÁÓÚÄÇЩûÓÐCÓïÑÔ»ù´¡µÄÈË,Ö»Òª¶à»¨Ò»µãʱ¼äÀ´Ñ§Ï°,Ò²ÊÇ¿ÉÒÔºÜ¿ìµØÊ¹ÓÃPerlÓïÑÔÀ´Ð´CGIÓ¦ÓóÌÐò!ÄÇʱºò,Äú¾Í»á·¢¾õÔÀ´PerlÊÇÄÇôµÄƽÒ×½üÈË,¶øÐ´³öÀ´µÄCGIÓ¦ÓóÌÐòÒ²ÊÇÄÇôµØ¼ò½àÓÐÁ¦,±ÊÕßÏàÐÅPerlÓïÑÔÔÚCGI³ÌÐòÉè¼ÆµÄÎę̀ÉÏÒ»¶¨ÊǰçÑÝ×Å×î¼ÑÄС´Å®)Ö÷½ÇµÄ½ÇÉ«¡£
¡¡¡¡ÔÚ±¾ÕÂÖÐÏȽéÉÜPerlÓïÑÔµÄÓï·¨,¶øÔÚÏÂÒ»ÕÂÖлá½éÉÜÈçºÎÔÚUnix²Ù×÷ϵͳÏÂʹÓÃPerlÀ´Ð´CGIÓ¦ÓóÌÐò,×îºó»áÔÚµÚ8ÕÂÖнéÉÜÈçºÎÔÚWindows95¡¢WindowsNTÕâЩ32λ²Ù×÷ϵͳÖÐʹÓÃPeriÀ´Ð´CGIÓ¦ÓóÌÐò¡£ÇóÖªÐÄÇеÄÄú,ÊDz»ÊÇÆÈ²»¼±´ýµØÏëÖªµÀPerlµÄ¹¦ÄÜÊǶàôµÄÇ¿´óÄØ?
6.2 ÈçºÎʹÓÃPerlÀ´Ð´³ÌÐò
¡¡¡¡Èç¹ûÔÚϵͳÖÐÒѰ²×°ÁËPerlµÄ»°,ÎÒÃÇ¿ÉÒÔÓá°which
perl¡±,»òÊÇ¡°which perl5"Õâ¸öÖ¸ÁîÀ´µÃÖªPerlÊÇλÓÚϵͳµÄÄÄÒ»¸öĿ¼Ï¡£
¡¡¡¡%which perl
¡¡¡¡/usr/bin/perl
»òÊÇ
¡¡¡¡%which perl5
¡¡¡¡/usr/locaiAin/per15
¡¡¡¡Ö®ºó¾Í¿ÉÒÔÀûÓÃPerlÀ´Ð´³ÌÐòÂëÁË¡£Èç¹ûÏëÖªµÀPerl°æ±¾µÄ»°,¿ÉÒÔÓá°perl-v¡±»ò¡°perl5-v¡±,Õâ¸öÖ¸ÁîÀ´µÃÖªPerlµÄ°æ±¾¡£Ä¿Ç°PerlµÄ×îа汾ÊÇ5.x°æ,¶øÒÔÏÂËù½éÉܵÄÓï·¨Ö¸Áî¶¼¿ÉÒÔÔÚPerl4ºÍPerl5°æ±¾ÖÐÖ´ÐС£Èç¹û²»ÐÒÔÚ¹¤×÷Õ¾ÉÏÕÒ²»µ½Õâ¸öÈí¼þµÄ»°,¿ÉÒÔÏòϵͳ¹ÜÀíÔ±ÒªÇó°²×°Õâ¸ö·Ç³£ÊµÓõÄÈí¼þ¡£
¡¡¡¡½ÓÏÂÀ´¿ÉÒÔÔÚ¹¤×÷վʹÓÃϵͳµÄÎÄÊé±à¼Æ÷(ÀýÈç:vi¡¢Joe¡¢picoµÈµÈ)À´±à¼³ÌÐòÂë,ÔÚ³ÌÐòÂëµÄµÚÒ»ÐÐÒ»¶¨Òª¼ÓÉÏ#!/path/per1³ÌÐòÆðÍ·Ðû¸æ¡£ÀýÈç,Óá°which
perl"Õâ¸öÖ¸ÁîÀ´µÃÖª/usr/bin/perlÕâ¸ö·¾¶ÎļþÃû,ËùÒÔÔÚд³ÌÐòÂëµÄʱºò,Ò»¶¨ÒªÔÚ³ÌÐòÂëµÄµÚÒ»ÐÐдÉÏ#/usr/bin/perlÕâÒ»ÐгÌÐòÆðÍ·Ðû¸æ,ÕâÑùϵͳ²ÅÖªµÀÒªµ½ÄÄÒ»¸ö·¾¶ÏÂÓÃÄÄÒ»¸öÖ´ÐÐÎļþÀ´Ö´ÐÐÕâ¸öдºÃµÄ³ÌÐòÂë,½ÓÏÂÀ´¾Í¿ÉÒÔÔÚÕâ¸öÎļþÖÐд³ÌÐòÂëÁË¡£ÕâÊÇPerlÓïÑÔ(½âÊÍʽ)ºÍCÓïÑÔ(±àÒëʽ)ÔÚ³ÌÐòд×÷ÖÐ×î´óµÄ²»Í¬µã¡£ÔÚCÓïÑÔÖÐÊǰÑÔʼ³ÌÐòÂë±àÒë¶ø³ÉÒ»¸öÖ´ÐÐÎļþ¾Í¿ÉÒÔÔÚϵͳÖÐÖ´ÐÐ,¶øPerlÓïÑÔ¾ÍÒªÔÚÔʼ³ÌÐòÂëµÄµÚÒ»ÐÐʹÓÃ#!ÔÙ¼ÓÉÏPerlµÄ¾ø¶Ô·¾¶ºÍÎļþÃû³Æ,ÒÔ±ã¸æËßϵͳҪʹÓÃPerlÕâ¸ö½âÊÍÆ÷À´½âÊÍÕâЩÔʼ³ÌÐòÂë¡£
¡¡¡¡ÔÚдÍê³ÌÐòÂëÖ®ºó,Ò»¶¨Òª°ÑÎļþÊôÐԸijɿÉÖ´ÐÐ,ÀýÈç¿ÉÒÔ°ÑÎļþÊôÐÔ¸ü¸Ä³Éÿ¸öÈ˶¼¿ÉÒÔÖ´ÐÐ(chmod 711 filename)¡£²»¹ý,Ò»°ãÎÒÃÇÔÚдCGIÓ¦ÓóÌÐòµÄʱºò,ΪÁ˱ÜÃâÆäËû´íÎóµÄ·¢Éú,×îºÃ°ÑCGIÓ¦ÓóÌÐòµÄÎļþÊôÐÔ¸ü¸Ä³Éÿ¸öÈ˶¼¿ÉÒÔÓжÁÈ¡¡¢Ö´ÐеÄȨÀû(chmod
755 filename)¡£
¡¡¡¡¶ø#Õâ¸ö·ûºÅÔÚPerlÓïÑÔ³ÌÐòÂëÖÐÊÇ´ú±í×¢½âµÄÒâ˼,Perl²»»áÈ¥´¦ÀíÕâÒ»ÐеÄÐðÊö,ËùÒÔÔÚÒÔϵķ¶ÀýÖÐ,Èç¹û³öÏÖÕâ¸ö·ûºÅµÄ»°,ÊÇ´ú±í±ÊÕß¶ÔÓÚ³ÌÐòÂëµÄ˵Ã÷,ÔÚ´ËÏÈÏò¶ÁÕß˵Ã÷һϡ£
6.3 PerlÓï·¨½éÉÜ
¡¡¡¡ÎªÁËÈôó¼Ò¶ÔPerlÓïÑÔÓиüÉî¿ÌµØÁ˽â,ÔÚ½éÉÜCGIÓ¦ÓóÌÐò֮ǰ,ÏÈÀ´½éÉÜPerlµÄ»ù±¾Óï·¨,±ÊÕßÏÈÔÚ±¾ÕÂÖмòµ¥¶óÒªµØÌæ´ó¼Ò½éÉÜPer1ÓïÑÔÔÚCGI³ÌÐòÉè¼ÆÖÐ×î³£ÓõÄÓï·¨º¯Êý,Ï£Íû´ó¼ÒÔÚ¿´ÍêÕâÒ»Õ½ÚÖ®ºó,Äܹ»Á˽âPerlÓïÑÔÊÇÕâôÈÝÒ×ÉÏÊÖ¡£Ö»Òª°ÑÕâЩ»ù±¾Óï·¨ÊìϤ֮ºó,¾Í¿ÉÒÔµÃÐÄÓ¦ÊÖµØÓÃPerlÀ´Ð´CGIÓ¦ÓóÌÐò¡£
6.3.1
PerlÓïÑԵıäÁ¿
¡¡¡¡PerlµÄ±äÁ¿»ù±¾ÉÏÓÐÈýÖÖ¼´´¿Á¿±äÁ¿(ScaiarVariable)¡¢Êý×é(Array)¡¢¹ØÁªÊý×é(Associative
array),¶øÒÔÏÂÊÇÕâЩ±äÁ¿µÄʹÓ÷½·¨:
¡¡¡¡Ò»¡¢´¿Á¿±äÁ¿(Scalar
Variables)µÄÓ÷¨
¡¡¡¡ÔÚPerlÓïÑÔÖбäÁ¿µÄʹÓò»ÏñÔÚCÓïÑÔÖл¹ÒªÊÂÏÈÐû¸æ,ÔÚʹÓô¿Á¿±äÁ¿µÄʱºòÒªÏȼÓÉÏ$Õâ¸ö·ûºÅ,ҪעÒâµÄÊÇÈç¹ûÖ¸¶¨µÄ´¿Á¿±äÁ¿ÊÇÒ»¸ö×Ö·û´®µÄ»°,¾ÍÒª¼ÓÉÏ""Õâ¸öË«ÒýºÅ·ûºÅÁË¡£Èç¹ûÊÇÒ»¸öÊýÖµµÄ»°,¾Í²»ÓüÓÉÏ""Õâ¸ö·ûºÅÁË¡£ÒÔÏÂÊÇһЩ·¶Àý£º
| $Strl=www"£» |
#½«wwwÕâ¸ö×Ö·û´®Ö¸¶¨¸ø$StrlÕâ¸ö´¿Á¿±äÁ¿; |
| $str2="cgi"; |
#½«cgiÕâ¸ö×Ö·û´®Ö¸¶¨¸ø$str2Õâ¸ö´¿Á¿±äÁ¿; |
| $str3=$strl.$str2; |
#.¾ÍÊǰÑÁ½¸ö×Ö·û´®Á¬ÆðÀ´,ËùÒÔ $str3="wwwc20"; |
| $int=5; |
#½«5Õâ¸öÊý×ÖÖ¸¶¨¸ø$intÕâ¸ö´¿Á¿±äÁ¿; |
| $int=3+2; |
#´Ëʱ$int=5; |
| $int=3*2; |
#´Ëʱ$int=6; |
| $int=l0;$int++; |
#´Ëʱ$int=10+l=11; |
| $int=l0,$int+=5; |
#´Ëʱ$int=10+5=15; |
¡¡¡¡¶þ¡¢Êý×é(Arrays)µÄÓ÷¨
¡¡¡¡ÔÚʹÓÃÊý×éµÄʱºòÒªÏȼÓÉÏ@Õâ¸ö·ûºÅ,ÒÔÏÂÊÇһЩ·¶Àý:
| @namel=("tom","mary"); |
#½«"tom","mary"ÕâÁ½¸ö×Ö·û´®Ö¸¶¨¸øÊý×é @name1 |
| @name2=@name1; |
#´ËʱµÄ@name2=("tom","mary") |
| @pame3=("john",@name1); |
#´ËʱµÄ (name3=("john","tom","mary") |
| ($one,@name4)=@name3; |
#´ËʱµÄ$one="john",¶ø @name4=("tom"'"mary") |
| @namel=0; |
#´Ëʱ@name1Ϊһ¸ö¿ÕÊý×é |
| @int=(1,3,5,7,9); |
| $x=@int; |
#½«Ò»¸öÊý×éÖ¸¶¨¸øÒ»´¿Á¿±äÁ¿,¾Í»á·µ»ØÊý×éÔª
#ËØµÄ¸öÊý,ËùÒÔ´ËʱµÄ$x=5 |
| $x=$#int; |
#$#Õâ¸ö±äÁ¿»á·µ»ØÊý×é×îºóÒ»¸öÔªËØµÄindex
#ËùÒÔ´Ëʱ$x=4 |
|
($x)=@int;
| #$xµÈÓÚÊý×é@intµÄµÚÒ»¸öÔªËØµÄÖµ,
#ËùÒÔ´Ëʱ$x=1 |
|
$b=$int[0];
| #$bµÈÓÚÊý×é@intµÄµÚÒ»¸öÔªËØ,ËùÒÔ$b=1 |
|
$C=@int[0];
| #$cÒ²ÊÇ»áµÈÓÚÊý×é@intµÄµÚÒ»¸öÔªËØ,ËùÒÔ
#$c=1,Òò´ËÒªºô½ÐÊý×éÖеÄÖµÓÐÒÔÉÏÁ½ÖÖ·½·¨ |
|
$int[0]=2;
| #½«2Õâ¸öÊýÖµÖ¸¶¨¸øÊý×é@intµÄµÚÒ»¸öÔªËØ
#´Ëʱ@int=(2,3,5,7,9); |
|
$int[0,1]=[1,3];
| #½«1Ö¸¶¨¸øÊý×é@intµÄµÚÒ»¸öÔªËØ,ÇÒ½«3Ö¸
#¶¨¸øÊý×é@intµÄµÚ¶þ¸öÔªËØµÄ,ËùÒÔ
#´Ëʱ@int=(1,3,5,7,9); |
|
@int[0,1]=@int[1,0];
| #½«Êý×é@intµÄǰÁ½¸öÔªËØ½»»»
#´Ëʱ@int=(3,1,5,7,9) |
|
($int[0],$int[1])
| #Ò²Êǽ«Êý×é@intµÄǰÁ½¸öÔªËØ½»»» |
|
=($int[l],$int[0]);
| #´Ëʱ@int=(1,3,5,7,9); |
|
@data=@int[0,l];
| #´Ëʱ@date=(1,3); |
|
$int[5]=11;
| #½«11Õâ¸öÊýÖµÖ¸¶¨¸øÊý×é@intÖеÚÁù¸öÔªËØ
#´Ëʱ@int=(1,3,5,7,9,11) |
¡¡¡¡Èý¡¢¹ØÁªÊý×é(Associative
arrays)µÄÓ÷¨
¡¡¡¡¹ØÁªÊý×éÒ²ÊÇÊý×éµÄÒ»ÖÖ,ÊÇÓɲ»Í¬µÄ´¿Á¿±äÁ¿Ëù×é³É¡£²»¹ýºÍÊý×鲻ͬµÄµØ·½ÊÇÔÚ¹ØÁªÊý×éÖеÄÔªËØÊÇÓɳɶԵÄkey-valueËù×é³ÉµÄ,Ò²¾ÍÊÇÿһ¸ökey¶¼ÓÐÒ»¸öÏà¶ÔÓ¦µÄÖµ(value),ÕâÊÇÔÚPerlÓïÑÔÖÐÌØÓеÄÓï·¨,ËùÒÔ³õѧÕß¶ÔÓÚ¹ØÁªÊý×é¿ÉÄÜ»á±È½ÏİÉúÒ»µã,±ÊÕß»áÔÚÕâÀï×÷±È½ÏÏêϸµÄ˵Ã÷¡£Èç¹ûÄܹ»½«¹ØÁªÊý×éµÄÓï·¨Ó¦ÓÃÔÚCGI³ÌÐòÉè¼ÆÖÐ,¾Í»á·¢ÏÖ¹ØÁªÊý×éÊÇÒ»¸öºÜºÃÓõÄÓï·¨¡£
¡¡¡¡ÔÚʹÓùØÁªÊý×éµÄʱºòÒªÏȼÓÉÏ%Õâ¸ö·ûºÅ,¶ø¹ØÁªÊý×éµÄ¸ñʽÈçÏÂ:
¡¡¡¡%ARRAY=(keyl,value1,key2,value2,key3,value3...);
¡¡¡¡Ã¿Ò»¸ökey¶¼ÓÐÒ»¸öÏà¶ÔÓ¦µÄÖµ(value)¡£
¡¡¡¡l.ÔÚ¹ØÁªÊý×éÖÐÔö¼Ó¡¢¸ü¸ÄÒ»¶ÔÊý¾Ý:
¡¡¡¡$ARRAY{key}=value;
¡¡¡¡ÔÚ¹ØÁªÊý×éARRAYÖмÓÉÏÒ»¶Ôkey-value,ÒªÏÈÔÚ¹ØÁªÊý×éÃû³ÆÇ°¼ÓÉÏ$Õâ¸ö·ûºÅ,¶øÇÒkeyµÄÃû³ÆÒªÔÚ{}·ûºÅÖ®¼ä,×îºóÔÙÖ¸¶¨keyËù¶ÔÓ¦µÄvalueÖµ¡£Èç¹ûÔÚÕâ¸ö¹ØÁªÊý×éÖÐÒѾÓÐÕâ¸ökeyÁË,¾Í»á¸ü¸ÄÕâ¸ökeyËù¶ÔÓ¦µÄvalue¡£
¡¡¡¡2.È¡³ö¹ØÁªÊý×éÖÐkeyËù¶ÔÓ¦µÄvalue:
¡¡¡¡$get=$ARRAY{key};
¡¡¡¡È¡³öÔÚ¹ØÁªÊý×éARRAYÖÐkeyËùÏà¶ÔÓ¦µÄvalue,ÒªÏÈÔÚ¹ØÁªÊý×éÃû³ÆÇ°¼ÓÉÏ$Õâ¸ö ·ûºÅ,¶øÇÒkeyµÄÃû³ÆÒªÔÚ{}·ûºÅÖ®¼ä,¾Í»á½«keyËù¶ÔÓ¦µÄvalueÈ¡³öÀ´²¢Ö¸¶¨¸ø$getÕâ¸ö±äÁ¿¡£
¡¡¡¡3.ɾ³ýÒ»¶ÔÔÚ¹ØÁªÊý×éÖеÄÊý¾Ý:
¡¡¡¡delete $ARRAY{key};
¡¡¡¡ deleteÊÇPerlËùÌṩµÄº¯Êý,×÷ÓÃÊÇɾ³ý¹ØÁªÊý×éÖеÄÒ»¸ökeyÒÔ¼°Õâ¸ökeyËù¶ÔÓ¦µÄvalue¡£Ê¹Ó÷½·¨ÊÇÔÚdeleteº¯ÊýÖ®ºó,ÔÙÖ¸¶¨¹ØÁªÊý×éÖÐҪɾ³ýkeyµÄÃû³Æ¡£ÒÔÏÂÊÇÓйعØÁªÊý×éÓ÷¨µÄһЩ·¶Àý:
| %NAMES=¡´I'"one",2'"two"); |
| $one=$NAMES{1}; |
#´Ëʱ$oneµÈÓÚ"one" |
| $two=$NAMES{2}; |
#´Ëʱ$twoµÈÓÚ"two" |
| $NAMES{3}="third"; |
#Ôö¼ÓÒ»¶Ôkey-valueµ½¹ØÁªÊý×éNAMESÖÐ
#´Ëʱ%NAMES=(1'"one",2'"two",3'"third"); |
| $NAMES{3}="three"; |
#ÒòΪÔÚ¹ØÁªÊý×éÖÐÒѾÓÐ3Õâ¸ökeyÁË,ËùÒÔ¾Í
#»á°ÑkeyΪ3Ëù¶ÔÓ¦µÄvalue¸ü¸Ä³É"three"
#´Ëʱ%NAMES=(1'"oneÑö,2'"two",3'"three"); |
| delete$NAMES{3}; |
#½«¹ØÁªÊý×éÖÐkeyֵΪ3µÄÒ»¶Ôkey-valueɾ³ýµô,
#´Ëʱ%NAMES=(1'"one",2'"two"), |
| @X=%NAMES; |
#½«¹ØÁªÊý×éNAMESÖ¸ÅɸøÊý×éX
#´Ëʱ@X=(1'"one",2'"two"); |
| %Y=@x; |
#½«Êý×éXÖ¸Åɸø¹ØÁªÊý×éY
#´Ëʱ%Y=(1'"one","two"); |
| %NAMES=(); |
#´Ëʱ%NAMESΪһ¸ö¿ÕµÄ¹ØÁªÊý×é |
6.3.2 PerlÔÚCGI³ÌÐòÉè¼ÆÖг£Óõĺ¯Êý
Ö¸Áî:#
˵Ã÷:×¢½â·ûºÅRemarkÐû¸æ
·¶Àý:#±¾³ÌÐòÊÇÒ»¸öʾ·¶×¢½â˵Ã÷
Ö¸Áî:print
Óï·¨Ò»:print Filehandle LIST
˵Ã÷:Õâ¸öFilehandle¿É°ÑËü¿´×÷ÔÚI(Input)/O(Output)¼äµÄÒ»¸öÇÅÁº,¿ÉÒÔÀûÓÃFilehandleÀ´×ö³öÊý¾Ý¶ÁÈëд³öµÄ¶¯×÷¡£stdinÊÇ´ú±í´ÓÄıßÊäÈëÊý¾Ý,ÀýÈç´ÓµçÄԵļüÅÌÊäÈë,stdoutÊÇ´ú±í´ÓÄıßÊä³öÊý¾Ý;ÀýÈç´ÓµçÄÔµÄÆÁÄ»Êä³ö;stderrÊÇ´ú±í´ÓÄıßÊä³ö´íÎóµÄÊý¾Ý,ÀýÈç´ÓµçÄÔµÄÆÁÄ»Êä³ö¡£¶øÔÚPerlÓïÑÔÖÐÓÐÈý¸ö±ê×¼µÄFilehandle:
¡¡¡¡(Ò»)STDIN(±ê×¼ÊäÈë):ÊÇ´ú±ístdinµÄFilehandle
¡¡¡¡(¶þ)STDOUT(±ê×¼Êä³ö):ÊÇ´ú±ístdoutµÄFilehandle
¡¡¡¡(Èý)STDERR(±ê×¼´íÎóÊä³ö):ÊÇ´ú±ístderrµÄFilehandle
¡¡¡¡Èç¹ûҪʹÓÃÆäËûFilehandleµÄʱºò,¾ÍÒªÓÃopenÕâ¸öº¯ÊýÀ´´ò¿ªÒ»¸öFilehandle,ÎÒÃÇ¿ÉÒÔÓÃprintÕâ¸öº¯Êý°ÑLISTµÄÊý¾ÝÊä³ö¸øFilehandle¡£ÔÚΪ´ó¼Ò½éÉÜprintÕâ¸ö
º¯Êý֮ǰ,ÏÈÈÃÎÒÃÇÀ´¿´¿´printº¯ÊýÖÐÌØÊâ´òÓ¡·ûºÅ×Ö·û:
| ·ûºÅ |
ÄÚ¶¨º¬Òâ |
| \n |
»»ÐÐNew Line |
| \r |
¹â±ê»»ÐÐReturn |
| \t |
Tab¼ü |
| \f |
»»Ò³Form feed |
| \b |
ÍË»ØÒ»¼üBackspace |
| \v |
´¹Ö±Tab¼ü |
| \a |
ÏìÁåBell |
| \007 |
Ê®½øÖÆASCIIÂë |
| \xff |
Ê®Áù½øÖÆÂë |
| \c[ |
¿ØÖÆ×Ö·û |
·¶Àý:
¡¡¡¡print STDOUT"i love perl\n";
¡¡¡¡½«¡°i love perl"ÔÙ¼ÓÉÏ»»ÐÐÏÔʾÓÚÆÁÄ»ÉÏ¡£
Óï·¨¶þ:Print LIST
˵Ã÷:Èç¹ûÊ¡ÂÔFilehandleµÄ»°,¾Í»á°ÑFilehandleÄÚ¶¨ÎªSTDOUT¡£Ò²¾ÍÊǻὫLISTµÄÊý¾ÝÄÚÈÝÏÔʾÓÚÆÁÄ»ÉÏ¡£
·¶Àý:
¡¡¡¡$Str1ng="perl";
¡¡¡¡print"i love $string\n";
¡¡¡¡»á½«¡°i love perl¡±ÔÙ¼ÓÉÏ»»ÐÐÏÔʾÔÚÆÁÄ»ÉÏ,¶øÈç¹ûÒªÈÃË«ÒýºÅÄڵıäÁ¿Ê§Ð§µÄ»°,¿ÉÒÔÔÚ±äÁ¿Ç°Ãæ¼ÓÉÏ\Õâ¸ö·ûºÅ¡£ÀýÈçÈç¹ûÊÇprint¡°i love
\$string¡±;µÄ»°,¾Í»áÏÔʾ³ö¡°i love $string¡±Õâ¸ö×Ö·û´®¡£
Óï·¨Èý£ºprint
˵Ã÷:ͬʱʡÂÔFilehandleºÍLISTµÄ»°,¾Í»áÒÔSTDOUTΪFilehandle,²¢»áÊä³ö$_Õâ ¸öÄÚ¶¨Êä³ö±äÁ¿µÄÊý¾ÝÄÚÈÝ¡£Èç¹û$_±äÁ¿ÊÇÒ»¸ö¿Õ×Ö·û´®µÄ»°,¾Í»áÏÔʾ³öÒ»¸ö¿Õ×Ö·û´®¡£
·¶Àý:
¡¡¡¡$_="i love perl\n";
¡¡¡¡print;
¡¡¡¡¾Í»á½«"i love perl"ÔÙ¼ÓÉÏ»»ÐÐÏÔʾÔÚÆÁÄ»ÉÏ
Ö¸Áî:printf
Óï·¨Ò»:printf Filehandle LIST
˵Ã÷:ÔÚperlÓïÑÔÖÐÒ²ÌṩCÓïÑÔÖÐprintfµÄÓï·¨,Ó÷¨ºÍCÓïÑÔÖеÄÓ÷¨Ò»Ä£Ò»Ñù¡£Èç¹û°ÑFilehandleÊ¡ÂԵϰ,Ò²Ò»Ñù»á°ÑSTD0UTµ±³ÉÊÇÄÚ¶¨µÄFilehandle¡£ÔÚΪ´ó¼Ò½éÉÜprintfº¯Êý֮ǰ,ÏÈÈÃÎÒÃÇÀ´¿´¿´printfº¯ÊýÖб任·ûºÅµÄ×Ö·û£º
| ·ûºÅ |
ÄÚ¶¨º¬Òâ |
| %c |
×Ö·û
|
| %s |
×Ö·û´®
|
| %d |
ÕûÊý
|
| %f |
¸¡ÕûÊý
|
| %h |
Ê®Áù½øÖÆÂë
|
| %o |
°Ë½øÖÆÂë
|
·¶Àý:
¡¡¡¡printf¡´"chmod%d%s£Ün","7l1","cgi");
¡¡¡¡»á½«¡°chmod 7ll cgi¡±ÔÙ¼ÓÉÏ»»ÐÐÏÔʾÓÚÆÁÄ»ÉÏ¡£
Ö¸Áî:chop
Óï·¨£ºchop($string)
˵Ã÷£º°Ñ×îºóÒ»¸ö×Ö·ûɾ³ýµô,³£³£ÓÃÕâ¸öº¯Êý°Ñ»»ÐеÄ×Ö·û(\n)ɾ³ýµô¡£
·¶Àý£º
¡¡¡¡$string="hello!\n";
¡¡¡¡chop($string); #´Ëʱ$string="hello!";
¡¡¡¡¶øÕâÁ½ÐÐÒ²¿ÉÒÔд³Échop($string="hello!£Ün");
Ö¸Áî:split
Óï·¨:split(/pattern/,$string,limit)
¡¡¡¡ÆäÖÐ/patternÊÇÎÄ×Ö´¦ÀíµÄģʽ,ÔÚÏÂһС½ÚÖлáÓÐÏêϸµÄÓï·¨½éÉÜ¡£¶ølimitÊÇ´ú±íÒª·Ö¸îµÄ¸öÊý,¿ÉÒÔÊ¡ÂÔ¡£
˵Ã÷:ÓÃÒ»¸öÖ¸¶¨µÄÎÄ×Ö´¦ÀíģʽÀ´·Ö¸î$string×Ö·û´®¡£
·¶Àý:
| $string="i;am;cute"; |
| @list=split(/:/,$string); |
#´Ëʱ@list=¡´"i","am","cute"); |
| ($a,$b,$c)=split(/:/,$string); |
#´Ëʱ$a="i",$b="am",$c="cute"; |
| @list=split(/:/,$string,2); |
#´Ëʱ@list=("i","love"); |
¡¡¡¡ÔÚ´«ËÍCGIÓ¦ÓóÌÐòÊý¾ÝµÄʱºò»áÏȽ«Êý¾Ý±àÂë,ÆäÖлὫFORMÖÐÿ¸öÊý¾Ý×ֶεÄÊý¾ÝÄÚÈÝÓÃ&Õâ¸ö·ûºÅ¸ô¿ª,ËùÒÔÔÚ½âÂëµÄʱºò¾ÍÒªÒÔ&Õâ¸ö·ûºÅΪ·Ö¸îµÄ×Ö·û,½«Ã¿¸öÊý¾Ý×ֶηָî³ö¡£ÀýÈç:
| $string="who=A&email=B"; |
| @list=split(/&/,$string), |
#´Ëʱ@list=¡´"who=A","email=B"); |
¡¡¡¡¶øÊý¾Ý×ֶεÄÃû³ÆºÍÕâ¸öÊý¾Ý×ֶεÄÖµÊÇÓÃ=Õâ¸ö·ûºÅÀ´¸ô¿ª,Èç¹ûÏëÈ¡µÃÊý¾Ý×ֶεÄÃû³ÆºÍËù¶ÔÓ¦µÄÖµµÄ»°,¾ÍÓÃÒª=Õâ¸ö·ûºÅÀ´·Ö¸îÊý¾Ý×Ö¶Î,ÀýÈç:
| $list="who=A"; |
| (0$name,$value)=sp1it(/=/,$list); |
#´Ëʱ$name="who";$value="A"; |
Ö¸Áî:keys
Óï·¨:keys(%ARRAY)
˵Ã÷:È¡³ö¹ØÁªÊý×é%ARRAYÖÐÈ«²¿µÄkey¡£
·¶Àý:
| %NAMES=(1,"one",2,"two"); |
| @list=keys(%NAMES), |
#´Ëʱ@list=(l,2); |
Ö¸Áî:values
Óï·¨:values(%ARRAY)
˵Ã÷:È¡³ö¹ØÁªÊý×é%ARRAYÖÐÈ«²¿µÄvalue¡£
·¶Àý:
| %NAMES=(1,"one",2,"two"); |
| @list=values(%NAMES); |
#´Ëʱ@list=("one","two"); |
Ö¸Áî:reverse
Óï·¨:reverse(@array)
˵Ã÷:½«Êý×é@arrayÖеÄÔªËØÓɺóµ½Ç°ÖØÐÂÅÅÁС£
·¶Àý:
| @list=("A","B","C","D"); |
| @1ist=reverse(@list); |
#´Ëʱ@list=("D","C","B","A") |
Ö¸Áî:sort
Óï·¨:sort(@array)
˵Ã÷:½«Êý×é@arrayÖеÄÔªËØÓÉСµ½´óÅÅÐò,Èç¹ûÒªÓÉ´óµ½Ð¡ÅÅÐòµÄ»°,¾ÍÒªÔÙ¼ÓÉÏreverseÕâ¸öº¯Êý¡£
·¶Àý:
| @array=("b","c","a"); |
| @array=sort(@array); |
#´Ëʱ@array=("a",b","c"); |
| @array=(reverse sort@array); |
#´Ëʱ@array=("c","b","a"); |
| Õâ¸öÓï·¨Ò²¿ÉÒÔд³É@array=(reverse
sort(@array)); |
| @number=(l0,3.20); |
| @number=sort(@number); |
#´Ëʱ@number=(l0,20,3); |
| ÓÉÉϸö·¶Àý¿ÉÒÔÖªµÀÈç¹ûÒªsortº¯ÊýÀ´ÅÅ
ÐòÊýÖµµÄʱºò,¾Í»á³ö²î´í,Òò´ËÒªÓÃÏÂÃæÕâ¸ö·½·¨²ÅÄÜÕýÈ·µØÊ¹ÓÃsortº¯ÊýÀ´ÅÅÐò¡£ |
| @number=(sort{$a<=>$b}@number); |
#´Ëʱ@number=(3,10,20); |
Ö¸Áî:length
Óï·¨:length($string)
˵Ã÷:Çó³öÒ»×Ö·û´®$stringµÄbytesÖµ¡£
·¶Àý:
| $string="Perl"; |
| @size=length($string); |
#´Ëʱ$size=4; |
Ö¸Áî:substr
Óï·¨:substr($string,offset,length)
¡¡¡¡ÆäÖÐoffset´ú±íÆðʼ×Ö·ûµÄλÖÃ,length´ú±íÒýÓõÄ×Ö·û´®³¤¶È,ÈçÊ¡ÂÔlengthµÄ»°´ú±í´ÓÆðʼֵµ½×Ö·û´®µÄ×îºóÒ»¸ö×Ö·û³¤¶È¡£¶øoffsetÈç¹ûÊǸºÖµµÄ»°,¾Í»á´Ó×Ö·û´®Óұ߿ªÊ¼È¡³öÖ¸¶¨µÄ×Ö·û´®¡£
˵Ã÷:ÔÚÒ»×Ö·û´®$stringÖÐÈ¡³öÏëÒªµÄ×Ö·û´®¡£
·¶Àý:
| $x=substr("testing",2,2); |
#´Ëʱ$x="st"; |
| $x=substr("testing",2); |
#´Ëʱ$x="sting"; |
| $x=substr("testing",-2,2); |
#´Ëʱ$x="in"; |
Ö¸Áî:index
Óï·¨:index($string,$substring,position)
¡¡¡¡ÆäÖÐ$substringÊÇָҪѰÕÒµÄ×Ö·û,position´ú±íÒª´ÓÄÄÒ»¸öλÖÿªÊ¼ÕÒÆð,ÈçÊ¡ÂÔpositionµÄ»°¾Í´ÓÍ·¿ªÊ¼ÕÒÆð¡£
˵Ã÷:·µ»ØËùÒªÕÒѰµÄ×Ö·ûÔÚÒ»×Ö·û´®$stringÖеÄλÖÃ,Èç¹ûÔÚ×Ö·û´®ÖÐÕÒ²»µ½×Ö·ûµÄ»°,Ôò»á·µ»Ø-lÕâ¸öÖµ¡£
·¶Àý:
| $x=index("testing","t"); |
#´Ëʱ$x=0; |
| $x=index("testing","t",2); |
#´Ëʱ$x=3; |
| $x=index("testing","perl"); |
#´Ëʱ$x=-l; |
Ö¸Áî:push
Óï·¨:push(@array,$string)
˵Ã÷:ÔÚÊý×é@arrayµÄ×îºóÒ»¸öÔªËØºó¸½¼ÓеÄÔªËØstringµ½Êý×é@arrayÖС£
·¶Àý:
| @array=("one"£¬"two")£» |
| push£¨@array,"three"); |
#´Ëʱ@array=¡´"one","two","three"); |
Ö¸Áî:pop
Óï·¨:pop(@array)
˵Ã÷:½«Êý×é@arrayµÄ×îºóÒ»¸öÔªËØÉ¾³ý,²¢½«É¾³ýµÄÔªËØ·µ»Ø¡£
·¶Àý:
| @array=¡´"one"'"two"); |
| $rm=pop¡´@array); |
#´Ëʱ@array=("one");¶ø$rm="two"; |
Ö¸Áî:unshift
Óï·¨:unshift(@array,$string)
˵Ã÷:ÔÚÊý×é@arrayµÄµÚÒ»¸öÔªËØÇ°¸½¼ÓеÄÔªËØ$stringµ½Êý×é@arrayÖС£
·¶Àý:
| @array=("one","two"); |
| unshift(@array'"three"); |
#´Ëʱ@array=("three","one","two"); |
Ö¸Áî:shift
Óï·¨:shift(@array)
˵Ã÷:½«Êý×é@arrayµÄµÚÒ»¸öÔªËØÉ¾³ý,²¢½«É¾³ýµÄÔªËØ·µ»Ø¡£
·¶Àý:
| @array=("one","two"); |
| $rm=shift(@array); |
#´Ëʱ@array=("two"),¶ø$rm="one"; |
Ö¸Áî:join
Óï·¨:join($string,@array)
˵Ã÷:ÔÚÒ»Êý×é@arrayµÄÔªËØÖ®¼ä¼ÓÉÏÒ»Ö¸¶¨µÄ×Ö·û$string,²¢½«½á¹û·µ»Ø¡£
·¶Àý:
| @array=("one","two","three"); |
| $total=join(":",@array); |
#´Ëʱ$total="one:two:three"; |
Ö¸Áî:grep
Óï·¨:grep(/pattern/,@array)
˵Ã÷:½«·ûºÏÎÄ×Ö´¦Àíģʽ(regular expression)µÄÊý×éÔªËØÕÒ³öÀ´¡£
·¶Àý:
| @array=("one","on","in"); |
| $count=grep(/on/,@array); |
#´Ëʱ$count=2;(´ú±íÓжþ¸öÔªËØ·ûºÏ) |
| @result=grep(/on/,@array); |
#´Ëʱ@result=("one","on"); |
Ö¸Áî:hex
Óï·¨:hex($string)
˵Ã÷:½«Ê®Áù½øÖƵÄÊýֵת³ÉÊ®½øÖÆ¡£
·¶Àý:
| $decimal=hex("ff"); |
#´Ëʱ$decimal=255; |
Ö¸Áî:rand
Óï·¨:rand($interger)
˵Ã÷:³£ºÍº¯Êýsrand´îÅäÀ´È¡µÃÒ»Ëæ»úÊý,Èç¹ûûÓÐÊÂÏÈÐû¸æstandº¯ÊýµÄ»°,ÔòÈ¡³öµÄÊýÖµÊÇÒ»¸ö¹Ì¶¨Öµ¡£Õâ¸öÓï·¨»á·µ»ØÒ»¸ö½éÓÚ0ºÍ$intergerÖ®¼äµÄÊýÖµ,Èç¹û$intergerÊ¡ÂԵϰ,Ôò»á·µ»ØÒ»¸ö½éÓÚ0ºÍ1µÄÊýÖµ¡£
·¶Àý:
| srand; |
#ÒªÏÈÐû¸æsrandº¯Êý,²ÅÄܲúÉúËæ»úÊýµÄЧ¹û |
| $int=rand(10); |
#$intµÄÖµ»á´óÓÚ0¶øÇÒСÓÚ10 |
| Èç¹ûÏ£Íû²úÉúµÄÂÒÊýÊÇÕûÊýµÄ»°,¾ÍÒªÔÙ
¼ÓÉÏintÕâ¸öº¯Êý |
| $int=int(rand(10)); |
#$intµÄÖµÊÇÒ»¸öÕûÊý,ÇÒÖµÔÚ0ºÍ9Ö®¼ä |
Ö¸Áî:localtime
Óï·¨:localtime(time)
˵Ã÷:¿É·µ»Ø¾Å¸öÓйØÊ±¼äµÄÔªËØ,ÔÚдCGIÓ¦ÓóÌÐòµÄʱºò³£»áÓõ½ÏµÍ³µÄʱ¼ä,ËùÒÔÔÚ´Ë»áÏêϸ½éÉÜÕâ¸öº¯ÊýµÄÓ÷¨¡£
·¶Àý:
¡¡¡¡($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
ÆäÖÐ:
| $sec |
´ú±íÃëÊý[0,59] |
$min |
´ú±í·ÖÊý[0,59] |
| $hour |
´ú±íСʱÊý[0,23] |
$mday |
´ú±íÊÇÔÚÕâ¸öÔµĵڼ¸Ìì[1,31] |
| $mon |
´ú±íÔÂÊý[0,11],Òª½«$mon¼ÓlÖ®ºó,²ÅÄÜ
·ûºÏʵ¼ÊÇé¿ö |
| $year |
´Ól990ÄêËãÆðµÄÄêÊý |
| $wday |
´ÓÐÇÆÚÁùËãÆð,´ú±íÊÇÔÚÕâÖÜÖеĵڼ¸Ìì
[0,6] |
| $yday |
´ÓÒ»ÔÂÒ»ÈÕËãÆð,´ú±íÊÇÔÚÕâÄêÖеĵڼ¸
Ìì[0,365] |
| $isdst |
Ö»ÊÇÒ»¸öflag |
| ÖªµÀÕâЩ±äÁ¿Ö®ºó,¾Í¿ÉÒÔÔÚCGIÓ¦ÓóÌÐòÖÐÄÃÀ´Ó¦ÓÃÁË¡£´ËÍâ,Ò²¿ÉÒÔÓÃÏÂÃæÕâÒ»ÐÐÖ¸ÁîÔÚUnixϵͳÏÂÈ¡µÃϵͳµÄʱ¼ä¡£ÎªÁ˱ÜÃâ´íÎó·¢Éú,×îºÃÓþø¶Ô·¾¶µÄ·½·¨À´È¡µÃϵͳʱ¼ä,Èç¹û¾ø¶Ô·¾¶²»Çå³þµÄ»°¿ÉÒÔÓá°which
date¡±,Õâ¸öÖ¸ÁîÀ´µÃÖª¡£×îºóÒªÌáÐѶÁÕßµÄÊÇÒªÓÃ`Õâ¸ö·ûºÅ²ÅÄÜÖ´ÐÐUnixϵͳµÄÍⲿ³ÌÐò,Èç¹ûÊÇÓá®(µ¥ÒýºÅ)Õâ¸ö×Ö·ûºÅµÄ»°,¾Í²»ÄÜÕýÈ·Ö´ÐÐϵͳµÄ³ÌÐòÁË¡£ |
¡¡¡¡$date=`/usr/bin/date`;
¡¡¡¡¶øÔÚperl5°æ±¾ÖÐ,Ò²¿ÉÒÔÓÃÏÂÃæÕâÒ»ÐÐÖ¸ÁîÀ´È¡µÃϵͳʱ¼ä¡£
¡¡¡¡$date=localtime(time);
Ö¸Áî:die
Óï·¨:die LIST
˵Ã÷:»á°ÑLIST×Ö·û´®ÏÔʾ³öÀ´,²¢Í˳ö³ÌÐò¡£³£³£ºÍ$!Õâ¸ö´ú±í´íÎóÐÅÏ¢µÄ±äÁ¿Ò»ÆðʹÓá£
·¶Àý:
¡¡¡¡Open(FILE'"$filename")||die"Cannotopenfile$!\n";
¡¡¡¡Èç¹û´ò¿ªÎļþʧ°ÜµÄ»°,¾Í»áÏÔʾ³ö´íÎóµÄÐÅÏ¢,Ö®ºóÔÙÍ˳ö³ÌÐò¡£
Ö¸Áî:open
Óï·¨:open(Filehandle'"$fiiename")
¡¡¡¡ÆäÖÐ$filenameÊÇÒ»¸öÖ¸¶¨´ò¿ªµÄÎļþÃû¡£
˵Ã÷:ÕâÊÇÒ»¸öºÜ³£Óõĺ¯Êý,¿ÉÓÃÓÚÎļþµÄ´ò¿ª(Read0niy)¡£ÔÚCGI³ÌÐòÉè¼ÆÖг£³£»á´ò¿ªÒ»¸öÎļþÀ´¶ÁÈ¡Êý¾Ý,ËùÒÔ±ÊÕß»áÏê¼Ó˵Ã÷ÕâÒ»¸öº¯ÊýµÄÏà¹ØÓ÷¨¡£Õâ¸öFilehandle¿É°ÑËü¿´×÷ÔÚI(Inpnt)/O(Output)¼äµÄÒ»¸öÇÅÁº,¿ÉÒÔÀûÓÃFilehandleÀ´×÷³öÊý¾Ý¶ÁÈëд³öµÄ¶¯×÷¡£¿ªÊ¼¿ÉÓÃopenÕâ¸öº¯ÊýÀ´´ò¿ªÒ»¸öÖ¸¶¨µÄÎļþ,½ÓÏÂÀ´¿ÉÒÔʹÓÃ<Filehandle>À´¶ÁÈ¡Ëù´ò¿ªÎļþµÄÊý¾ÝÄÚÈÝ,×îºóÒ»¶¨ÒªÓÃcloseÕâ¸öº¯ÊýÀ´¹Ø±ÕÕâ¸ö֮ǰ´ò¿ªµÄFilehandle¡£Òª×¢ÒâµÄÊÇÔÚCGI³ÌÐòд×÷ÖÐ,µ±ÓÃopenÕâ¸öº¯ÊýÀ´´ò¿ªÎļþµÄʱºò,Ò»¶¨ÒªÔÚ´ò¿ªµÄÎļþǰ¼ÓÉÏÎļþËùÔڵľø¶Ô·¾¶Ãû³Æ¡£
·¶Àý:
¡¡¡¡$filename=Vpath/cgi.txt";
¡¡¡¡open(FILE'"$filename")||die"Can not open $filename£Ün";
¡¡¡¡#½«Êý¾ÝÖ¸Åɸø´¿Á¿±äÁ¿$line(Ò»ÐÐÒ»ÐеØ)
¡¡¡¡while($line=<FILE>){
¡¡¡¡¡¡print"$line";
¡¡¡¡}
¡¡¡¡close(FILE);
¡¡¡¡¾Í»á°Ñcgi.txtÕâ¸öÎļþµÄÄÚÈÝÏÔʾ³öÀ´¡£
Óï·¨¶þ:open(Filehandle,"<$filename")
˵Ã÷:Õâ¸öÓï·¨Ò²¿ÉÒÔ´ò¿ªÒ»¸ö´æÔÚµÄÎļþ(Read Only)¡£
·¶Àý:
¡¡¡¡$filename="/path/cgi.txt";
¡¡¡¡open(FILE,"<$filename")||die"Can not open $filename\n";
¡¡¡¡#½«<FILE>È«²¿µÄÊý¾ÝÄÚÈݶ¼Ö¸ÅɸøÊý×é@array
¡¡¡¡@array=<FILE>;
¡¡¡¡close(FILE);
¡¡¡¡print"@array";
¡¡¡¡Ò²»á°Ñcgi.txtÕâ¸öÎļþµÄÄÚÈÝÏÔʾ³öÀ´¡£
Óï·¨Èý:open(Filehandle,">$filemme)
˵Ã÷:½¨Á¢Ò»¸öеÄÎļþ(Write Only),Èç¹ûÒѾ´æÔÚÕâ¸öÎļþÁË,¾Í»á°Ñ¾ÉÎļþÃû¸²¸Ç¹ýÈ¥¡£²¢¿ÉÓÃprint FilehandleµÄ·½Ê½½«Êý¾Ýдµ½Ëù´ò¿ªµÄÎļþÖС£
·¶Àý:
¡¡¡¡$filename="/path/cgi.txt";
¡¡¡¡open(FILE,">$filename")||die"Can not open $filename\n";
¡¡¡¡print FILE"this is a new line1\n";¡¡¡¡#\nÊÇ»»ÐÐ×Ö·û
¡¡¡¡print FILE"this is a new line2\n";
¡¡¡¡close(FILE);
¡¡¡¡»á°ÑÊý¾Ý´æÔÚÒ»¸öÐÂÎļþÖС£
Óï·¨ËÄ:Open(Filehandle,">>$filename")
˵Ã÷:Êý¾ÝÓø½¼ÓµÄ·½Ê½Ð´ÈëÒ»Îļþ(Write Only),Èç¹ûÖ¸¶¨µÄÎļþÃû²»´æÔڵϰ,¾Í»á½¨Á¢Ò»¸öеÄÎļþ¡£
·¶Àý:
¡¡¡¡$filename="/path/cgi.txt";
¡¡¡¡open(FILE,">>$filename")||die"Can not open $filename\n";
¡¡¡¡print FILE"this is a newline1\n";
¡¡¡¡print FILE"this is a newline2\n";
¡¡¡¡close(FILE);
¡¡¡¡»á°ÑÊý¾Ý¸½¼Ó(append)µ½Ò»¸öÎļþ(cgi.txt)ÖС£
Óï·¨Îå:Open(Filehandle,"|Unix Command")
˵Ã÷:¾Í»á°ÑÔÚFiiehandleµÄÊý¾ÝÊä³ö¸øUnixµÄÖ¸ÁîÀ´×÷´¦Àí¡£
·¶Àý:
¡¡¡¡$mailprog="/usr/ucb/mail";¡¡#UnixϵͳÉϵļÄÐųÌÐò(Òª¼Ó¾ø¶Ô·¾¶Å¶!)
¡¡¡¡$who="jcjung@tem.nctu.edu.tw";
¡¡¡¡open(FILE,"|$mailprog$who")||die"CannotFail!\n";
¡¡¡¡print FILE"Ïë²»ÏëÎÒѽ?\n";
¡¡¡¡print FILE"Òª¿ìÒ»µã»ØÐÅŶ!\n";
¡¡¡¡close(FILE);
¡¡¡¡¾Í»áͨ¹ýUnixϵͳmailµÄ³ÌÐò,½«FILEÕâ¸öFilehandleµÄÊý¾ÝÄÚÈݼĸø$whoÕâ¸ö±äÁ¿ËùÖ¸¶¨µÄÊÕÐÅÈË¡£ÎÒÃÇ¿ÉÒÔÀûÓÃopenÕâ¸öº¯ÊýÀ´Éè¼ÆÒ»¸öÀ´ÐÅÅúÆÀÖ¸½ÌµÄCGlÓ¦ÓóÌÐò,ÔÚ±¾ÊéÖеÄÏÂÒ»ÕÂÖлáÓÐÏêϸµÄ½éÉÜ¡£
Ö¸Áî:close
Ó÷¨:close(Filehandle)
˵Ã÷:ÓÃopenÕâ¸öº¯ÊýÀ´´ò¿ªÒ»¸öfilehandleÖ®ºó,Ò»¶¨ÒªÓÃcloseÕâ¸öº¯Êý°ÑËù´ò¿ªµÄFilehandle¹Ø±Õ¡£
·¶Àý:
¡¡¡¡open(Fiiehandle,"$filename");
¡¡¡¡close(Filehandle);
Ö¸Áî:pack
Óï·¨:pack("Ö¸¶¨µÄ¸ñʽ",LIST)
˵Ã÷:packÕâ¸öº¯Êý»á½«Ò»¸öLIST±ä³ÉËùÖ¸¶¨µÄ¶þ½øÖÆÊý¾Ý¸ñʽ¡£ÔÚCGI³ÌÐò·Ö¸î½âÂë¹ý³ÌÖÐ,»áÓõ½packÕâ¸öº¯Êý,ËùÒÔ±ÊÕßÔڴ˼òµ¥½éÉÜÕâ¸öº¯ÊýµÄÓ÷¨¡£
·¶Àý:
¡¡¡¡$string=pack("C",65);¡¡¡¡#´Ëʱ$string="A";
¡¡¡¡½«65Õâ¸öASCIIÂëת»»³ÉÒ»¸öunsigned×Ö·û,ÆäÖÐC¾ÍÊÇÖ¸¶¨Òª×ª»»³Éunsigned×Ö·ûµÄÒâ˼¡£
Ö¸Áî:read
Óï·¨:read(Filehandle,$string,length)
¡¡¡¡ÆäÖÐlengthÊÇ´ú±í¶ÁÈë×Ö·û´®µÄ³¤¶È(bytes)¡£ ˵Ã÷:ÓÃreadÕâ¸öº¯Êý°ÑFilehand1eÖеÄÊý¾ÝÒÀÖ¸¶¨µÄ×Ö·û´®³¤¶È¶ÁÈëÖ®ºóÖ¸Åɸø$stringÕâ¸ö±äÁ¿¡£ÔÚCGI³ÌÐò·Ö¸î½âÂë¹ý³ÌÖÐ,Èç¹ûFORMµÄ´«ËÍ·½Ê½ÊÇÉ趨ΪPOSTµÄ»°,¾Í»á½«´«Ë͵ÄÊý¾ÝÉ趨Ϊ±ê×¼ÊäÈë,ËùÒԻὫÊý¾ÝÄÚÈÝÖ¸¶¨¸øSTDINÕâ¸ö±ê×¼ÊäÈëµÄFilehandle,¶øCGI»·¾³±äÁ¿$ENV{'CONTENT_LENGTH'}¾ÍÊÇ´ú±íʹÓÃÕßËͳöÊý¾ÝÄÚÈݵij¤¶È,Òò´ËÎÒÃÇÒªÓÃreadÕâ¸öº¯ÊýÀ´È¡µÃʹÓÃÕßËͳöµÄÊý¾ÝÄÚÈÝ¡£
·¶Àý:
¡¡¡¡read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});
¡¡¡¡¾Í»á½«STDINÕâ¸ö±ê×¼ÊäÈëFilehandleÖеÄÊý¾ÝÒÀÖ¸¶¨µÄ×Ö·û´®³¤¶È¶ÁÈë,ÔÙÖ¸Åɸø$bufferÕâ¸ö±äÁ¿¡£
Ö¸Áî:exit
Óï·¨:exit
˵Ã÷:Í˳öÖ´ÐеijÌÐò¡£
·¶Àý:
¡¡¡¡print"i love perl";
¡¡¡¡exit;
¡¡¡¡ÏÔʾ³ö¡°i love perl"Ö®ºó,¾ÍÂíÉÏÍ˳öÕâ¸ö³ÌÐò¡£
6.3.3 PerlÓïÑÔµÄÔËËã·ûºÅ×Ö·û
¡¡¡¡ÒÔÏÂÊÇÔÚPerlÓïÑÔÖг£ÓõÄÔËËã×Ö·û,´ó²¿·ÖºÍCÓïÑÔÖеÄÔËËã×Ö·ûºÜÀàËÆ,ѧ¹ýCÓïÑÔµÄÈËÓ¦¸Ã»á¶ÔÕâЩÔËËã×Ö·ûÊ®·ÖÊìϤ²Å¶Ô¡£
¡¡¡¡Ò»¡¢¸³Öµ(Assignment)ÔËËã·û
| ·ûºÅ |
·¶Àý |
˵Ã÷ |
| = |
$x=$y; |
½«$yµÄÖµÖ¸Åɸø$x |
| += |
$x+=$y; |
$x=$x+$y;½«$x¼Ó$yÖ®ºóÔÙÖ¸Åɸø$x |
| -= |
$x-=$y; |
$x=$x-$y;½«$x¼õ$yÖ®ºóÔÙÖ¸Åɸø$x |
| *= |
$x*=$y; |
$x=$x*$y;½«$x³Ë$yÖ®ºóÔÙÖ¸Åɸø$x |
| /= |
$x/=$y; |
$x=$x/$y;Çó³ö$x³ýÒÔ$yÖ®ºóµÄÉÌÊý,ÔÙÖ¸Åɸø$x |
| **= |
$x**=$y; |
$x=$x**$y;½«$x³ËÉÏ$y´Î·½Ö®ºóÔÙÖ¸Åɸø$x |
| %= |
$x%=$y |
$x=$x%$y;Çó³ö$x³ýÒÔ$yµÄÓàÊýÖ®ºó,ÔÙÖ¸Åɸø$x |
| .= |
$str1.=$str2; |
$str1=$str1.$str2;
½«$str1Õâ¸ö×Ö·û´®ÔÙ¼ÓÉÏ$str2Õâ¸ö×Ö·û´®Ö®ºó,ÔÙÖ¸Åɸø$str1Õâ¸ö×Ö·û´® |
| x= |
$str x=$y |
$str=$str x $y
ÖØ¸´$str×Ö·û´®$y´Î²¢°Ñ½á¹ûÖ¸Åɸø$strÕâ¸ö×Ö·û´® |
¡¡¡¡¶þ¡¢ËãÊõ(Arithmetic)ÔËËã·û
| ·ûºÅ |
·¶Àý |
˵Ã÷ |
| + |
$z=$x+$y |
½«$xºÍ$yÏà¼ÓÖ®ºó,ÔÙ½«½á¹ûÖ¸Åɸø$z |
| - |
$z=$x-$y |
½«$x¼õµô$yÖ®ºó,ÔÙ½«½á¹ûÖ¸Åɸø$z |
| * |
$z=$x*$y |
½«$xºÍ$yÏà³ËÖ®ºó,ÔÙ½«½á¹ûÖ¸Åɸø$z |
| / |
$z=$x/$y |
½«$x³ýÒÔ$yÖ®ºó,ÔÙ½«ÉÌÊýÖ¸Åɸø$z |
| % |
$z=$x%$y |
½«$x³ýÒÔ$yÖ®ºó,ÔÙ½«ÓàÊýÖ¸Åɸø$z |
| ** |
$z=$x**$y |
½«$x³ËÒÔ$y´Î·½Ö®ºó,ÔÙ½«½á¹ûÖ¸Åɸø$z |
| ++ |
$x++;++$x |
Èçͬ$x=$x+1,½«$x¼ÓÒ»ÒÔºóÔÙ½«½á¹ûÖ¸Åɸø$x |
| -- |
$x--;--$x |
Èçͬ$x=$x-1,½«$x¼õÒ»ÒÔºóÔÙ½«½á¹ûÖ¸Åɸø$x |
| . |
$z=$x.$y |
½«$x×Ö·û´®ºÍ$y×Ö·û´®Á¬½ÓÖ®ºó,ÔÙ½«½á¹ûÖ¸Åɸø$z |
¡¡¡¡Èý¡¢ÊýÖµ(Numeric Values)¹ØÏµÔËËã·û
| ·ûºÅ |
·¶Àý |
˵Ã÷ |
| > |
$x>$y |
Èç¹û$x´óÓÚ$y,·µ»Ø1µÄÖµ,·ñÔò·µ»Ø0 |
| >= |
$x>=$y |
Èç¹û$x´óÓÚµÈÓÚ$y,·µ»Ø1µÄÖµ,·ñÔò·µ»Ø0 |
| < |
$x<$y |
Èç¹û$xСÓÚ$y,·µ»ØlµÄÖµ,·ñÔò·µ»Ø0 |
| <= |
$x<=$y |
Èç¹û$xСÓÚµÈÓÚ$y,·µ»Ø1µÄÖµ,·ñÔò·µ»Ø0 |
| == |
$x==$y |
Èç¹û$xµÈÓÚ$y,·µ»ØlµÄÖµ,·ñÔò·µ»Ø0 |
| != |
$x!=$y |
Èç¹û$x²»µÈÓÚ$y,·µ»Ø1µÄÖµ,·ñÔò·µ»Ø0 |
| <=> |
$x<=>$y |
Èç¹û$x´óÓÚ$y,·µ»Ø1µÄÖµ;Èç¹û$xµÈÓÚ$y,·µ»Ø0;Èç¹û$xСÓÚ$y,Ôò·µ»Ø-1µÄÖµ |
¡¡¡¡ËÄ¡¢×Ö·û´®(StringValues)¹ØÏµÔËËã·û
| ·ûºÅ |
·¶Àý |
˵Ã÷ |
| gt |
$str1 gt $str2 |
Èç¹û$str1´óÓÚ$str2,·µ»Ø1µÄÖµ,·ñÔò·µ»Ø0 |
| ge |
$str1 ge $str2 |
Èç¹û$str1´óÓÚµÈÓÚ$str2,·µ»Ø1µÄÖµ,·ñÔò·µ»Ø0 |
| lt |
$str1 lt $str2 |
Èç¹û$str1СÓÚ$str2,·µ»Ø1µÄÖµ,·ñÔò·µ»Ø0 |
| le |
$strl le $str2 |
Èç¹û$strlСÓÚµÈÓÚ$str2,·µ»Ø1µÄÖµ,·ñÔò·µ»Ø0 |
| eq |
$strl eq $str2 |
Èç¹û$strlµÈÓÚ$str2,·µ»Ø1µÄÖµ,·ñÔò·µ»Ø0 |
| ne |
$str1 ne $str2 |
Èç¹û$strl²»µÈÓÚ$str2,·µ»Ø1µÄÖµ,·ñÔò·µ»Ø0 |
| cmp |
$str1 cmp $str2 |
Èç¹û$str1´óÓÚ$str2,·µ»Ø1µÄÖµ;Èç¹û$str1µÈÓÚ$str2,·µ»Ø0;Èç¹û$str1СÓÚ$str2,Ôò·µ»Ø-1µÄÖµ |
¡¡¡¡Îå¡¢Âß¼(Logical)ÔËËã·û
¡¡¡¡1.$x && $y(And)
| $x |
$y |
½á¹û |
| Õæ(True) |
Õæ(True) |
Õæ(True) |
| Õæ(True) |
¼Ù(False) |
¼Ù(False) |
| ¼Ù(False) |
Õæ(True) |
¼Ù(False) |
| ¼Ù(False) |
¼Ù(False) |
¼Ù(False) |
¡¡¡¡2.$x||$y(Or)
| $x |
$y |
½á¹û |
| Õæ(True) |
Õæ(True) |
Õæ(True) |
| Õæ(True) |
¼Ù(False) |
Õæ(True) |
| ¼Ù(False) |
Õæ(True) |
Õæ(True) |
| ¼Ù(False) |
¼Ù(False) |
¼Ù(False) |
¡¡¡¡3.!$x(Not)
| $x |
½á¹û |
| Õæ(True) |
¼Ù(False) |
| ¼Ù(False) |
Õæ(True) |
¡¡¡¡Áù¡¢ÆäËû³£ÓõÄÔËËã·û
Ö¸Áî:..Çø¿éÔËËã·û(Range
Operator)
˵Ã÷:Õâ¸öÔËËã·ûÊÇPerlÓïÑÔÖÐÌØÓеÄÔËËã·û,ÊÇÒ»¸öºÜʵÓõÄÔËËã·û¡£
·¶Àý:
¡¡¡¡@digits=(1..9)£»¡¡¡¡¡¡¡¡#´Ëʱ@digits=(l,2,3,4,5,6,7,8,9)£»
¡¡¡¡@digits=('10'..'05')£»¡¡#´Ëʱ@digits=(01,02,03,04,05);
¡¡¡¡@char=('A'..'E')£»¡¡¡¡¡¡#´Ëʱ@char=('A','B','C','D','E');
¡¡¡¡@total=(l..3,'A'..'B')£»#´Ëʱ@total=(1,2,3,'A','B');
Ö¸Áî:ÅбðÔËËãʽ?ÔËËãʽ1:ÔËËãʽ2¡¡Ìõ¼þÔËËã·û(Conditional
Operator)
˵Ã÷:Õâ¸öÓï·¨µÄÒâÒåºÍCÓïÑÔÒ»Ñù,Èç¹ûÅбðÔËËãʽµÄÖµÊÇÕæ(True)µÄ»°,Ôò×öÔËËã1µÄ
ÔËËã,Èç¹ûÅбðÔËËãʽÊǼÙ(False)µÄ»°,Ôò×öÔËËãʽ2µÄÔËËã¡£
·¶Àý:
¡¡¡¡$price=($age>60)?100:200;
¡¡¡¡Èç¹û$age´óÓÚ60µÄ»°,Ôò$priceµÈÓÚ100;·ñÔò$priceµÈÓÚ200.
¡¡¡¡Æß¡¢³£ÓõÄÎļþÊý¾Ý(File test)ÔËËã·û
| ·¶Àý |
˵Ã÷ |
| -r $file |
Èç¹û$fileÊǿɶÁÈ¡µÄ»°,·µ»Ø1µÄÖµ |
| -w $file |
Èç¹û$fileÊÇ¿ÉдÈëµÄ»°,·µ»Ø1µÄÖµ |
| -x $file |
Èç¹û$fileÊÇ¿ÉÖ´Ðеϰ,·µ»Ø1µÄÖµ |
| -e $file |
Èç¹û$file´æÔڵϰ,·µ»Ø1µÄÖµ |
| -o $file |
Èç¹û$fileÊDZ»Ö´ÐÐÕßËùÓµÓеϰ,·µ»Ø1µÄÖµ |
| -s $file |
·µ»Ø$fileµÄÎļþ´óС(bytes) |
| -f $file |
Èç¹û$fileÊÇÕý³£ÎļþµÄ»°,·µ»Ø1µÄ Öµ |
| -T $file |
Èç¹û$fileÊÇÎı¾ÎļþµÄ»°,·µ»Ø1µÄÖµ |
| -B $file |
Èç¹û$fileÊÇBillryÎļþµÄ»°,·µ»Ø1µÄÖµ |
| -M $file |
·µ»Ø$fileÎļþ×îºóÒ»´Î¸ü¸Äʱ¼äµ½ÏÖÔÚµÄÈÕÆÚÊý |
6.3.4 PerlÓïÑÔµÄÁ÷³Ì¿ØÖÆ
¡¡¡¡ÒÔÏÂÊÇÔÚPerlÓïÑÔÖг£ÓõijÌÐòÁ÷³Ì¿ØÖÆ,´ó²¿·ÖºÍCÓïÑԵijÌÐòÁ÷³Ì¿ØÖƺÜÀàËÆ,ѧ
¹ýCÓïÑÔµÄÈË,Ó¦¸Ã»áºÜÊìϤ¡£
¡¡¡¡Ò»¡¢Ñ¡ÔñÐÔÁ÷³Ì¿ØÖÆ
Ö¸Áî:if¼ÙÈç
Óï·¨Ò»:if(ÅбðÔËËãʽ){
¡¡¡¡¡¡¡¡¡¡¡¡³ÌÐòÐðÊöÇø¿é;
¡¡¡¡¡¡¡¡}
¡¡¡¡¡¡ÉϸöÓï·¨ÔÚPerlÖÐÒ²¿ÉÒÔд³É:
¡¡¡¡¡¡³ÌÐòÐðÊöÇø¿éif(ÅбðÔËËãʽ)£»
·¶Àý:
¡¡¡¡print"ÇëÊäÈëÄúµÄ·ÖÊý?\n"£»
¡¡¡¡$score=<STDIN>;¡¡#<STDIN>´ú±í±ê×¼ÊäÈë,»áÈÃʹÓÃÕßÊäÈëÒ»×Ö·û´®
¡¡¡¡chop($score);¡¡¡¡#½«$score×îºóÒ»¸ö»»ÐÐ×Ö·û\nɾ³ýµô
¡¡¡¡if($score>=60){
¡¡¡¡¡¡¡¡print"ÄúµÄ·ÖÊý¼°¸ñÁË!\n";
¡¡¡¡Ò²¿ÉÒÔд³É:
¡¡¡¡print"ÄúµÄ·ÖÊý¼°¸ñÁË!\n"if($score>=60);
Óï·¨¶þ:if(ÅбðÔËËãʽһ){
¡¡¡¡¡¡¡¡¡¡³ÌÐòÐðÊöÇø¿éÒ»;
¡¡¡¡¡¡¡¡}else{
¡¡¡¡¡¡¡¡¡¡³ÌÐòÐðÊöÇø¿é¶þ;
¡¡¡¡¡¡¡¡}
·¶Àý:
¡¡¡¡print"ÇëÊäÈëÄúµÄ·ÖÊý?\n";
¡¡¡¡$score=<STDIN>;
¡¡¡¡chop($score);
¡¡¡¡if($score>=60){
¡¡¡¡¡¡¡¡print"ÄúµÄ·ÖÊý¼°¸ñÁË!\n"
¡¡¡¡}else{
¡¡¡¡¡¡¡¡print"ÄúµÄ·ÖÊý²»¼°¸ñ!£Ün";
¡¡¡¡}
Óï·¨Èý:if(ÅбðÔËËãʽһ){
¡¡¡¡¡¡¡¡¡¡¡¡³ÌÐòÐðÊöÇø¿éÒ»;
¡¡¡¡¡¡¡¡}elsif(ÅбðÔËËãʽ¶þ){
¡¡¡¡¡¡¡¡¡¡¡¡³ÌÐòÐðÊöÇø¿é¶þ;
¡¡¡¡¡¡¡¡}else{
¡¡¡¡¡¡¡¡¡¡¡¡³ÌÐòÐðÊöÇø¿éÈý;
¡¡¡¡}
·¶Àý:
¡¡¡¡print"ÇëÊäÈëÄúµÄ·ÖÊý?\n";
¡¡¡¡$score=<STDIN>;
¡¡¡¡chop($score);
¡¡¡¡if($score>60){
¡¡¡¡¡¡¡¡print"ÄúµÄ·ÖÊý´óÓÚ60·Ö!\n";
¡¡¡¡}elsif($score$x¬){
¡¡¡¡¡¡¡¡print"ÄúµÄ·ÖÊýСÓÚ60·Ö!\n";
¡¡¡¡}else{
¡¡¡¡¡¡¡¡print"ÄúµÄ·ÖÊý¸ÕºÃÊÇ60·Ö!\n";
¡¡¡¡}
Ö¸Áî:unless¼ÙÈç·Ç
Óï·¨Ò»:unless(ÅбðÔËËãʽ){
¡¡¡¡¡¡¡¡¡¡¡¡¡¡³ÌÐòÐðÊöÇø¿é;
¡¡¡¡¡¡¡¡}
¡¡¡¡¡¡ÉϸöÓï·¨ÔÚPer1ÖÐÒ²¿ÉÒÔд³É:
¡¡¡¡¡¡³ÌÐòÐðÊöÇø¿éunless(ÅбðÔËËãʽ);
·¶Àý:
¡¡¡¡print"ÇëÊäÈëÄúµÄ·ÖÊý?\n";
¡¡¡¡$score=<STDIN>;#<STDIN>´ú±í±ê×¼ÊäÈë,»áÈÃʹÓÃÕßÊäÈëÒ»×Ö·û´®
¡¡¡¡chop($score);#½«$score×îºóÒ»¸ö»»ÐÐ×Ö·û£Ünɾ³ýµô
¡¡¡¡unless($score<60){
¡¡¡¡¡¡¡¡print"ÄúµÄ·ÖÊý¼°¸ñÁË!£Ün";
¡¡¡¡}
¡¡¡¡Ò²¿ÉÒÔд³É:
¡¡¡¡print"ÄúµÄ·ÖÊý¼°¸ñÁË!\n"unless($score$x¬);
Óï·¨¶þ:unless(ÅбðÔËËãʽһ){
¡¡¡¡¡¡¡¡¡¡¡¡³ÌÐòÐðÊöÇø¿éÒ»;
¡¡¡¡¡¡¡¡}else{
¡¡¡¡¡¡¡¡¡¡¡¡³ÌÐòÐðÊöÇø¿é¶þ;
¡¡¡¡¡¡¡¡}
·¶Àý:
¡¡¡¡print"ÇëÊäÈëÄúµÄ·ÖÊý?\n";
¡¡¡¡$score=<STDIN>;
¡¡¡¡chop($score)
¡¡¡¡unless($score$x¬){
¡¡¡¡¡¡¡¡print"ÄúµÄ·ÖÊý¼°¸ñÁË!\n";
¡¡¡¡}else{
¡¡¡¡¡¡¡¡print"ÄúµÄ·ÖÊý²»¼°¸ñ!\n";
¡¡¡¡}
¡¡¡¡¶þ¡¢Ñ»·Á÷³Ì¿ØÖÆ
Ö¸Áî:whileµ±..
Óï·¨:while(ÅбðÔËËãʽ){
¡¡¡¡¡¡¡¡¡¡³ÌÐòÐðÊöÇø¿é;
¡¡¡¡¡¡}
¡¡¡¡ÉϸöÓï·¨ÔÚPerlÖÐÒ²¿ÉÒÔд³É:
¡¡¡¡³ÌÐòÐðÊöÇø¿éwhile(ÅбðÔËËãʽ);
·¶ÀýÒ»:
¡¡¡¡while($i<=10){
¡¡¡¡¡¡¡¡$sum+=$i;
¡¡¡¡¡¡¡¡$i++;
¡¡¡¡}
¡¡¡¡print"$sum\n";¡¡¡¡#´Ëʱ$sum=55;
·¶Àý¶þ:
¡¡¡¡$filename="/path/cgi.txt";
¡¡¡¡open(FILE,"$filename")||die"Can not open $filename\n";
¡¡¡¡#¿ÉÒÔ°Ñ<FILE>ÊÓΪÔÚ´ò¿ªÎļþÖÐijһÐеÄÊý¾Ý
¡¡¡¡while($line=<FILE>){
¡¡¡¡¡¡¡¡print"$line";
¡¡¡¡}
¡¡¡¡close(FILE);
¡¡¡¡¾Í»á°Ñcgi.txtÕâ¸öÎļþµÄÄÚÈÝÏÔʾ³öÀ´¡£¶øÕâ¸ö·¶Àý¿ÉÒÔ°ÑËü¸Äд³É:
¡¡¡¡$filename="/path/cgi.txt";
¡¡¡¡open(FILE'"$filename")||die"Can not open $filename\n";
¡¡¡¡print"$line"while($line=<FILE>);
¡¡¡¡close(FILE);
¡¡¡¡ÔÚÕâ¸ö·¶ÀýÖÐÊǰÑ$filemmeÎļþÄÚµÄÊý¾ÝÒ»ÐÐÒ»ÐÐÖ¸Åɸø$lineÕâ¸ö´¿Á¿±äÁ¿,ÔÙ °Ñ$lineÏÔʾ³öÀ´¡£Èç¹ûûÓн«<FILE>Ö¸ÅɸøÒ»¸ö´¿Á¿±äÁ¿µÄ»°,Ôò»áÓÐÒ»ÄÚ¶¨µÄ
ÊäÈë±äÁ¿$_±»<FILE>ËùÖ¸ÅÉ¡£ÒòΪ$_ÊÇÒ»¸öÄÚ¶¨µÄ±äÁ¿,ËùÒÔÈç¹ûʹÓÃprintº¯Êý µÄʱºòûÓмÓÉÏÒªÊä³öÊý¾ÝµÄ»°,¾Í»á°Ñ$_µÄÊý¾Ýprint³öÀ´¡£ËùÒÔÕâ¸ö·¶ÀýÒ²¿É
ÒÔ¸Äд³É:
¡¡¡¡$filename="/path/cgi.txt";
¡¡¡¡open(FILE,"$filename")||die"Can not open $filename\n";
¡¡¡¡while(){
¡¡¡¡¡¡¡¡Print;
¡¡¡¡}
¡¡¡¡close(FILE);
Ö¸Áî:do while µ±..
Óï·¨:do{
¡¡¡¡¡¡¡¡³ÌÐòÐðÊöÇø¿é,
¡¡¡¡¡¡}while(ÅбðÔËËãʽ);
¡¡¡¡ÔÚwhileºÍdo whileÑ»·ÖÐ×î´óµÄ²»Í¬ÊÇÔÚdo whileÑ»·ÖÐ,³ÌÐòÐðÊöÇø¿éÖÁÉÙ»á ±»Ö´ÐÐÒ»´Î¡£
·¶Àý:
¡¡¡¡do{
¡¡¡¡¡¡¡¡$sum+=$i;
¡¡¡¡¡¡¡¡$i++;
¡¡¡¡}while($i<=10);
¡¡¡¡print"$sum\n";¡¡¡¡¡¡¡¡#´Ëʱ$sum=55,
Ö¸Áî:untilÖ±µ½...²Å
Óï·¨:until(ÅбðÔËËãʽ){
¡¡¡¡¡¡¡¡¡¡³ÌÐòÐðÊöÇø¿é;
¡¡¡¡}
¡¡¡¡ÉϸöÓï·¨ÔÚPerlÖÐÒ²¿ÉÒÔд³É:
¡¡¡¡³ÌÐòÐðÊöÇø¿é until (ÅбðÔËËãʽ);
·¶Àý:
¡¡¡¡until($i>10){
¡¡¡¡¡¡¡¡$sum+=$i;
¡¡¡¡¡¡¡¡$i++;
¡¡¡¡}
. ¡¡¡¡print"$sum\n";#´Ëʱ$sum=55;
Ö¸Áî:do until Ö±µ½...²Å
Óï·¨:do{
¡¡¡¡¡¡¡¡³ÌÐòÐðÊöÇø¿é;
¡¡¡¡¡¡}until(ÅбðÔËËãʽ);
·¶Àý:
¡¡¡¡do{
¡¡¡¡¡¡¡¡$sum+=$i;
¡¡¡¡¡¡¡¡$i++;
¡¡¡¡}until($i>l0);
; ¡¡¡¡print"$sum£Ün";#´Ëʱ$sum=55;
Ö¸Áî:forÑ»·³ÂÊö
Óï·¨Ò»:for(³õʼ»¯ÔËËãʽ,ÅбðÔËËãʽ;Ñ»·¹ý³ÌÔËËãʽ){
¡¡¡¡¡¡¡¡¡¡¡¡³ÌÐòÐðÊöÇø¿é;
¡¡¡¡¡¡¡¡¡¡}
·¶ÀýÒ»:
¡¡¡¡$sum=0;
¡¡¡¡for($i=l;$i<$i++){
¡¡¡¡¡¡¡¡$sum+=$i;
¡¡¡¡print"$sum\n";¡¡¡¡¡¡¡¡#´Ëʱ$sum=55;
·¶Àý¶þ:
¡¡¡¡@array=(3,6,9);
¡¡¡¡$number=@array£º¡¡¡¡¡¡#°ÑÊý×é@arrayµÄÔªËØ¸öÊýÖ¸Åɸø$number
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡#´Ëʱ$number=3;
¡¡¡¡for($i=0;$i<ber;$i++){
¡¡¡¡¡¡¡¡$sum+=$array[$i]£º#°ÑÊý×é@arrayÔªËØµÄֵȫ²¿¼ÓÆðÀ´
¡¡¡¡}
Óï·¨¶þ:for$variab1e(@array){
¡¡¡¡¡¡¡¡³ÌÐòÐðÊöÇø¿é;
¡¡¡¡¡¡¡¡}
¡¡¡¡ÔÚPerlÓïÑÔÖеÄforÑ»·³ÂÊö»¹¿ÉÒÔʹÓÃÕâ¸öÓï·¨,ºÍÑ»·³ÂÊöforeachµÄÓ÷¨Ò» Ñù¡£Èç¹û°Ñ$variable±äÁ¿Ê¡ÂԵϰ,¾Í»á½«Êý×é@array
µÄÔªËØÒ»¸öÒ»¸öÖ¸¶¨¸ø $_Õâ¸ö±äÁ¿,ÕâÊDZȽϾ«¼òµÄд·¨¡£
·¶Àý£º
¡¡¡¡@array=(3,6,9);
¡¡¡¡for$int(@array){
¡¡¡¡¡¡¡¡$sum+=$int;
¡¡¡¡}
¡¡¡¡print"$sum\n";#´Ëʱ$sum=18;
¡¡¡¡Ò²¿ÉÒÔд³É:
¡¡¡¡@array=(3,6,9);
¡¡¡¡for(@array){
¡¡¡¡¡¡¡¡$sum+=$_;
¡¡¡¡}
¡¡¡¡print"$sum\n";#´Ëʱ$sum=18;
Ö¸Áî:foreach Ñ»·³ÂÊö
Óï·¨:foreach $variable(@array)(
¡¡¡¡¡¡³ÌʽÐðÊöÇø¿é;
¡¡¡¡¡¡}
¡¡¡¡Èç¹û°Ñ$variable±äÁ¿Ê¡ÂԵϰ,¾Í»á½«Êý×é@arrayµÄÔªËØÒ»Ò»Ö¸¶¨¸ø$_Õâ¸öÄÚ¶¨ µÄÊä³ö±äÁ¿¡£
·¶ÀýÒ»:
¡¡¡¡@array=(3,6,9);
¡¡¡¡foreach $int(@array){
¡¡¡¡¡¡¡¡$sum+=$int;
¡¡¡¡Print"$sum\n";#´Ëʱ$sum=l8;
¡¡¡¡Ò²¿ÉÒÔд³É:
¡¡¡¡@array=(3,6,9);
¡¡¡¡foreach(@array){
¡¡¡¡¡¡¡¡$sum+=$_;
¡¡¡¡}
¡¡¡¡print"$sum\n";#´Ëʱ$sum=18;
·¶Àý¶þ:
¡¡¡¡%F0RM=("name"'"NCTU","value","TEM");
¡¡¡¡foreach $pair(sort keys%FORM){ ¡¡¡¡¡¡¡¡print"$pair is $FORM{$pair}\n";
¡¡¡¡}
¡¡¡¡Õâ¸ö·¶ÀýÔÚCGI³ÌÐòд×÷Öг£³£»áÓõ½¡£ÏÈÓÃkeysÕâ¸öº¯ÊýÀ´Çó³ö¹ØÁªÊý×éÖÐÈ«²¿ µÄkey,ÔÙÓÃsortÕâ¸öº¯Êý°ÑÈ«²¿µÄkeyÓÉСµ½´óÅÅÐò,×îºóÔٰѹØÁªÊý×éÖеÄkeyºÍ
Ëù¶ÔÓ¦µÄÖµ(value)Ò»Ò»ÏÔʾ³ö¡£¶øÒÔÉÏÕâ¸ö³ÌÐòÒ²¿Éд³É:
¡¡¡¡%FORM=("name"'"NCTU","vaiue","TEM");
¡¡¡¡@array=(sortkeys%F0RM);
¡¡¡¡foreach $pair(@array){
¡¡¡¡¡¡¡¡print"$pairis$F0RM{$pair}\n";
¡¡¡¡}
Ö¸Áî:last Í˳öÑ»·³ÂÊö
Óï·¨:last
·¶Àý:
¡¡¡¡for($i=1;$i<=l0;$i++){
¡¡¡¡¡¡¡¡last if ($i==5);¡¡#Èç¹û$iµÈÓÚ5µÄ»°¾ÍÍ˳öforÑ»·
¡¡¡¡¡¡¡¡print"$i\n";
¡¡¡¡}
¡¡¡¡»á°Ñlµ½4Ö®¼äµÄÊýÖµÏÔʾ³öÀ´¡£
Ö¸Áî:nextµ½Ñ»·µÄÏÂÒ»¸ö³ÂÊö
Óï·¨:next
·¶Àý:
¡¡¡¡for($i=l;$i<=10;$i++){
¡¡¡¡¡¡¡¡#Èç¹ûÊÇ2µÄ±¶ÊýµÄ»°,¾Íµ½Ñ»·µÄÏÂÒ»¸ö³ÂÊö
¡¡¡¡¡¡¡¡next if (($i%2)==0)
¡¡¡¡¡¡¡¡print"$iÊÇÒ»¸öÆæÊý!£Ün";
¡¡¡¡}
¡¡¡¡»á°Ñ1µ½10Ö®¼äµÄÆæÊýÏÔʾ³öÀ´¡£
6.3.5 PerlÓïÑÔµÄÎÄ×Ö´¦Àíģʽ(Regular
Expression)
¡¡¡¡Èç¹ûÔÚUnixÖÐÔø¾Ê¹Óùýsde¡¢awk¡¢grepÕâЩָÁîµÄ»°,ÏàÐŶÔÓÚPerlÓïÑÔÖеÄÎÄ×Ö´¦Àíģʽ(Regular
Expression) Ó¦¸Ã²»»á¸Ðµ½Ä°Éú²Å¶Ô¡£ÔÚPerlÓïÑÔÖÐÒòΪÓÐÕâ¸ö¹¦ÄÜ,ËùÒÔ¶ÔÓÚ×Ö·û´®µÄ´¦ÀíÄÜÁ¦ÊǷdz£Ç¿ÓÐÁ¦µÄ¡£Regular Expression¿ÉÊÓΪÓÃÀ´´¦Àí×Ö·û´®µÄÒ»ÖÖģʽ(pattern),ÆäʹÓõĸñʽΪ/pattern/¡£ÔÚPerlÓïÑԵijÌÐòÉè¼ÆÖÐ,¾³£¿ÉÒÔ¿´µÃµ½ÀàËÆÓï·¨µÄÓ¦ÓÃ,ÔÚCGI³ÌÐòÉè¼ÆÖÐÒ²²»ÀýÍâ¡£Ö»ÒªÄܹ»ÉÆÓÃÎÄ×Ö´¦ÀíģʽµÄ»°,Òª´¦ÀíÈκÎÄѵÄ×Ö
·û´®½Ô¿ÉÓÈжø½â,ÔÚ±¾ÕÂÖбÊÕß»áÓÃÉîÈëdz³öµÄ·½Ê½À´½éÉÜRegufar ExpressionµÄÓ÷¨¡£
¡¡¡¡Ò»¡¢ÎÄ×Ö´¦Àí(RegularExpression)µÄ³£ÓÃÓï·¨
¡¡¡¡ÒÔÏÂÊÇÎÄ×Ö´¦ÀíģʽÖÐ,/pattern/³£Óõ½µÄÓï·¨:
| /pattern/ |
˵Ã÷ |
| ¡¡ |
³ýÁË»»ÐÐ×Ö·û/nÍâ,ÕÒѰֻÓÐÒ»¸ö×Ö·ûµÄ×Ö·û´® |
| x? |
ÕÒѰ0¸ö»òÊÇ1¸öx×Ö·û |
| x* |
ÕÒѰ0¸ö»òÊÇ0¸öÒÔÉϵÄx×Ö·û |
| .* |
ÕÒѰ0¸ö»òÊÇ0¸öÒÔÉϵÄÈκÎ×Ö·û |
| x+ |
ÕÒѰ1¸ö»òÊÇ1¸öÒÔÉϵÄx×Ö·û |
| .+ |
ÕÒѰ1¸ö»òÊÇ1¸öÒÔÉϵÄÈκÎ×Ö·û |
| {m} |
ÕÒѰ¸ÕºÃÊÇm¸÷¸öÊýÖ¸¶¨µÄ×Ö·û |
| {m,n} |
ÕÒѰÔÚm¸ö¸öÊýÒÔÉÏ¡¢n¸ö¸öÊýÒÔÏÂÖ¸¶¨µÄ×Ö·û |
| {m,} |
ÕÒѰm¸ö¸öÊýÒÔÉÏÖ¸¶¨µÄ×Ö·û |
| [] |
ÕÒѰ·ûºÏ[]ÄÚµÄ×Ö·û |
| [^] |
ÕÒѰ²»·ûºÏ[]ÄÚµÄ×Ö·û |
| [0-9] |
ÕÒѰ·ûºÏ0µ½9µÄÈκÎÒ»¸ö×Ö·û |
| [a-z] |
ÕÒѰ·ûºÏaµ½zµÄÈκÎÒ»¸ö×Ö·û |
| [^0-9] |
ÕÒѰ²»·ûºÏ0µ½9µÄÈκÎÒ»¸ö×Ö·û |
| [^a-z] |
ÕÒѰ²»·ûºÏaµ½zµÄÈκÎÒ»¸ö×Ö·û |
| ^ |
ÕÒѰ×Ö·û´®¿ªÍ·µÄ×Ö·û |
| $ |
ÕÒѰ×Ö·û´®½áβµÄ×Ö·û |
| \d |
ÕÒѰһ¸ödigit(Êý×Ö)µÄ×Ö·û,ºÍ[0-9]Óï·¨Ò»Ñù |
| \d+ |
ÕÒѰһ¸ödigit(Êý×Ö)ÒÔÉϵÄ×Ö·û´®,ºÍ[0-9]+Óï·¨Ò»Ñù |
| \D |
ÕÒѰһ¸önon-digit(·ÇÊý×Ö)µÄ×Ö·û,ºÍ[^0-9]Óï·¨Ò»Ñù |
| \D+ |
ÕÒѰһ¸önon-digit(·ÇÊý×Ö)ÒÔÉϵÄ×Ö·û´®,ºÍ[^0-9]+Óï·¨Ò»Ñù |
| \w |
ÕÒѰһ¸öÓ¢ÎÄ×Öĸ»òÊÇÊýÖµµÄ×Ö·û,ºÍ[a-zA-Z0-9]Óï·¨Ò»Ñù |
| \w+ |
ÕÒѰһ¸öÒÔÉÏÓ¢ÎÄ×Öĸ»òÊÇÊýÖµµÄ×Ö·û´®,ºÍ[a-zA-Z0-9]+Óï·¨Ò»Ñù |
| \W |
ÕÒѰһ¸ö·ÇÓ¢ÎÄ×Öĸ»òÊÇÊýÖµµÄ×Ö·û,ºÍ[^a-zA-Z0-9]Óï·¨Ò»Ñù |
| \W+ |
ÕÒѰһ¸öÒÔÉÏ·ÇÓ¢ÎÄ×Öĸ»òÊÇÊýÖµµÄ×Ö·û´®,ºÍ[^a-zA-Z0-9]+Óï·¨Ò»Ñù |
| \s |
ÕÒѰһ¸ö¿Õ°×µÄ×Ö·û,ºÍ[\n\t\r\f]Ò»Ñù |
| \s+ |
ÕÒѰһ¸öÒÔÉϿհ׵Ä×Ö·û,ºÍ[\n\t\r\f]+Ò»Ñù |
| \S |
ÕÒѰһ¸ö·Ç¿Õ°×µÄ×Ö·û,ºÍ[^\n\t\r\f]Ò»Ñù |
| \S+ |
ÕÒѰһ¸öÒÔÉϷǿհ׵Ä×Ö·û,ºÍ[^\n\t\r\f]+Ò»Ñù |
| \b |
ÕÒѰһ¸ö²»ÒÔÓ¢ÎÄ×Öĸ¡¢ÊýֵΪ±ß½çµÄ×Ö·û´® |
| \B |
ÕÒѰһ¸öÒÔÓ¢ÎÄ×Öĸ¡¢ÊýֵΪ±ß½çµÄ×Ö·û´® |
| a|b|c |
ÕÒµ½·ûºÏa×Ö·û»òÊÇb×Ö·û»òÊÇc×Ö·ûµÄ×Ö·û´® |
| abc |
ÕÒµ½Ò»¸öº¬ÓÐabcµÄ×Ö·û´® |
| (pattern) |
()Õâ¸ö·ûºÅ»á¼ÇÒäËùÕÒѰµ½µÄ×Ö·û´®,ÊÇÒ»¸öºÜʵÓõÄÓï·¨
µÚÒ»¸ö()ÄÚËùÕÒµ½µÄ×Ö·û´®±ä³É$1Õâ¸ö±äÁ¿»òÊÇ\1±äÁ¿
µÚ¶þ¸ö()ÄÚËùÕÒµ½µÄ×Ö·û´®±ä³É$2Õâ¸ö±äÁ¿»òÊÇ\2±äÁ¿
ÒÔ´ËÀàÍÆ,±ÊÕß»áÔÚÏÂÒ»¸öС½ÚÖÐÏêϸ½éÉÜËüµÄÓ÷¨ |
| /pattern/i |
iÕâ¸ö²ÎÊýÊÇ´ú±íºöÂÔÓ¢ÎÄ´óСлµÄÒâ˼,Ò²¾ÍÊÇÔÚÕÒѰ×Ö·û´®µÄʱºò,²»»áÈ¥¿¼ÂÇÓ¢ÎĵĴóСд |
| \ |
Èç¹ûÒªÔÚpatternģʽÖÐÕÒѰһ¸öÓÐÌØÊâÒâÒåµÄ×Ö·û,ÒªÔÚÕâ¸ö×Ö·ûǰ¼ÓÉÏ\Õâ¸ö·ûºÅ,ÕâÑù²Å»áÈÃÕâ¸öÌØÊâ×Ö·ûʧЧ |
¡¡¡¡¶þ¡¢ÎÄ×Ö´¦Àíģʽ(RegularExpression)µÄ¼òµ¥·¶Àý
¡¡¡¡¿´ÁËÉÏһС½ÚÎÄ×Ö´¦Àíģʽ¡´RegularExpression)Ö®ºó,³õѧÕß¶ÔÓÚÕâ¸öÓï·¨µÄÓ¦ÓÿÉÄÜ
»¹²»ÊǺÜÇå³þ,ËùÒÔ±ÊÕß»áÔÚÕâһС½ÚÖÐ,¾Ù³öһЩÔÚÎÄ×Ö´¦ÀíģʽÖг£Óõķ¶Àý¸ø´ó¼ÒÇÆÇÆ£º
| ·¶¡¡Àý |
˵¡¡¡¡Ã÷ |
| /perl/ |
ÕÒµ½º¬ÓÐperlµÄ×Ö·û´® |
| /^perl/ |
ÕÒµ½¿ªÍ·ÊÇperlµÄ×Ö·û´® |
| /perl$/ |
ÕÒµ½½áβÊÇperlµÄ×Ö·û´® |
| /c|g|i/ |
ÕÒµ½º¬ÓÐc»òg»òiµÄ×Ö·û´® |
| /cg{2,4}i/ |
ÕÒµ½cºóÃæ¸ú×Å2¸öµ½4¸ög,ÔÙ¸ú×ÅiµÄ×Ö·û´® |
| /cg{2}i/ |
ÕÒµ½cºóÃæ¸ú×Å2¸ög,ÔÙ¸ú×ÅiµÄ×Ö·û´® |
| /cg*i/ |
ÕÒµ½cºóÃæ¸ú×Å0¸ö»ò¶à¸ög,ÔÙ¸ú×ÅiµÄ×Ö·û´®,Èçͬ/cg{0,}i/ |
| /cg+i/ |
ÕÒµ½cºóÃæ¸ú×ÅÒ»¸öÒÔÉϵÄg,ÔÙ¸ú×ÅiµÄ×Ö·û´®,Èçͬ/cg{1,}i/ |
| /cg?i/ |
ÕÒµ½cºóÃæ¸ú×Å0¸ö»òÊÇÒ»¸ög,ÔÙ¸ú×ÅiµÄ×Ö·û´®,Èçͬ/cg{0,1}i/ |
| /c.i/ |
ÕÒµ½cºóÃæ¸ú×ÅÒ»¸öÈÎÒâ×Ö·û,ÔÙ¸ú×ÅiµÄ×Ö·û´® |
| /c..i/ |
ÕÒµ½cºóÃæ¸ú×Ŷþ¸öÈÎÒâ×Ö·û,ÔÙ¸ú×ÅiµÄ×Ö·û´® |
| /[cgi]/ |
ÕÒµ½·ûºÏÓÐÕâÈý¸ö×Ö·ûÈÎÒâÒ»¸öµÄ×Ö·û´® |
| /[^cgi]/ |
ÕÒµ½Ã»ÓÐÓÐÕâÈý¸ö×Ö·ûÈÎÒâÒ»¸öµÄ×Ö·û´® |
| /\d/ |
ÕÒѰ·ûºÏÊýÖµµÄ×Ö·û´®
¿ÉÒÔʹÓÃ/\d+/À´±íʾһ¸ö»òÊǸö¶à¸öÊýÖµµÄ×Ö·û´® |
| /\D/ |
ÕÒѰ·ûºÏ²»ÊÇÊýÖµµÄ×Ö·û´®
¿ÉÒÔʹÓÃ/\D+/À´±íʾһ¸ö»òÊǸö¶à¸ö·ÇÊýÖµµÄ×Ö·û´® |
| /\w/ |
ÕÒѰ·ûºÏÓ¢ÎÄ×Öĸ¡¢ÊýÖµµÄ×Ö·û´®
¿ÉÒÔʹÓÃ/\w+/À´±íʾһ¸ö»òÊǸö¶à¸öÓ¢ÎÄ×Öĸ¡¢ÊýÖµµÄ×Ö·û´® |
| /\W/ |
ÕÒѰ·ûºÏ·ÇÓ¢ÎÄ×Öĸ¡¢ÊýÖµµÄ×Ö·û´®
¿ÉÒÔʹÓÃ/\W+/À´±íʾһ¸ö»òÊǸö¶à¸ö·ÇÓ¢ÎÄ×Öĸ¡¢ÊýÖµµÄ×Ö·û´® |
| /\s/ |
ÕÒѰ·ûºÏ¿Õ°×µÄ×Ö·û´®
¿ÉÒÔʹÓÃ/\s+/À´±íʾһ¸ö»òÊǸü¶à¸ö¿Õ°××Ö·ûµÄ×Ö·û´® |
| /\S/ |
ÕÒѰ·ûºÏ²»Êǿհ××Ö·ûµÄ×Ö·û´®
¿ÉÒÔʹÓÃ/\S+/À´±íʾһ¸ö»òÊǸü¶à²»Êǿհ׵Ä×Ö·ûµÄ×Ö·û´® |
| /\*/ |
ÕÒѰ·ûºÏ*Õâ¸ö·ûºÅµÄ×Ö·û´®,ÒòΪ*ÔÚÎÄ×Ö´¦ÀíģʽÖÐÓÐËüµÄÌØÊâÒâ˼,ËùÒÔÒªÔÚÕâ¸öÌØÊâ·ûºÅǰ¼ÓÉÏ\Õâ¸ö·ûºÅ,ÕâÑù²Å»áÈÃÕâ¸öÌØÊâ×Ö·ûʧЧ |
| /abc/i |
ÕÒѰ·ûºÏabcµÄ×Ö·û´®¶øÇÒ²»¿¼ÂÇÕâЩ·ûºÏ×Ö·û´®µÄ´óСд |
¡¡¡¡Èý¡¢ÎÄ×Ö´¦Àíģʽ(Regular Expression)Ïà¹ØµÄÔËËã·û¼°º¯Êý
¡¡¡¡ÔÚperl³ÌÐòд×÷Öг£»áÓõ½=~ºÍ!~ÕâÁ½¸öÔËËã·û¼°sºÍtrÕâ¶þ¸öº¯ÊýÀ´ºÍÎÄ×Ö´¦Àí
ģʽ/pattern/´îÅä¶ø³ÉÒ»¸öÔËËãʽ,Èç¹ûÄܹ»»îÓÃÕâЩָÁîµÄ»°,¾Í¿ÉÒÔºÜÇáÒ×µØÀ´´¦ ÀíһЩ×Ö·û´®£¬µ±È»ÔÚCGI³ÌÐòÉè¼ÆÖÐÒ²¾Í¸üÄܵÃÐÄÓ¦ÊÖÁË¡£ÏÖÔÚ¾ÍÈÃ×÷ÕßÀ´½éÉÜÕâЩ
ÔËËã·û¼°º¯ÊýµÄÓ÷¨£º
Ö¸Áî: /pattern/ÎÄ×ÖÔËËã
˵Ã÷:Èç¹ûÔÚÎÄ×ÖÔËËãÖÐûÓÐʹÓÃ=~»òÊÇ!~ÔËËã·ûÖ¸¶¨Ò»¸ö×Ö·û´®À´×öÔËËãµÄ»°,
¾Í»á ʹÓÃÄÚ¶¨µÄÊä³ö±äÁ¿$_À´×ö/pattern/ÎÄ×ÖÔËËã¡£
·¶ÀýÒ»:
¡¡¡¡$string="chmod7llcgi";
¡¡¡¡$string=~/(\w+)\s+(\d+)/;
¡¡¡¡µÚÒ»¸ö(\w+)ÊÇ´ú±íÕÒѰÊý¸ö×Öĸ£¬²¢½«ËùÕÒµ½µÄ×Ö·û´®Ö¸Åɸø$lÕâ¸ö±äÁ¿,¶ø\s+´ú±í ÕÒѰ¶à¸ö¿Õ°×µÄ×Ö·û´®,×îºó(\d+)´ú±íÕÒѰÊý¸öÊýÖµ,²¢½«ËùÕÒµ½µÄ×Ö·û´®Ö¸Åɸø$2Õâ
¸ö±äÁ¿¡£ËùÒÔ$l="chmod",$2=71l,µ«ÊÇ$string»¹ÊǵÈÓÚÔÀ´µÄ×Ö·û´®,ûÓиı䡣
·¶Àý¶þ:
¡¡¡¡$_="chmod71lcgi";
¡¡¡¡/(\w+)\s+(\d+)/;
¡¡¡¡ÒòΪÊǰÑ×Ö·û´®Ö¸¶¨¸ø$_Õâ¸ö±äÁ¿,ËùÒÔ¿ÉÒÔ²»ÓÃ=~Õâ¸öÔËËã·û¾Í»áµÃµ½$l="chmod", $2=711;¶øÇÒ$_»¹ÊǵÈÓÚÔÀ´µÄ×Ö·û´®,ûÓиı䡣
·¶ÀýÈý:
¡¡¡¡$string="chmod71lcgi";
¡¡¡¡@list=split(/\s+/,$string);
¡¡¡¡ÒÔÒ»¸ö»òÊǶà¸ö¿Õ°××Ö·ûÀ´·Ö¸î$stringÕâ¸ö×Ö·û´®,ÕâÊÇÒ»¸öºÜ³£ÓõÄÓï·¨¡£´Ëʱ
¡¡¡¡@list=("chmod","7ll","cgi");
Ö¸Áî: =~ÏàÅäÔËËã·û
˵Ã÷:ÕâÊÇPerlÓïÑÔÖÐÌØÓеÄÓï·¨,ͨ³£»áºÍÎÄ×Ö´¦ÀíģʽÀ´×÷ÔËËã¡£
·¶Àý:
¡¡¡¡print"ÇëÊäÈëÒ»¸ö×Ö·û´®!\n";
¡¡¡¡$string=<STDIN>;¡¡#<STDIN>´ú±í±ê×¼ÊäÈë,»áÈÃʹÓÃÕßÊäÈëÒ»×Ö·û´®
¡¡¡¡chop($string);¡¡¡¡#½«$string×îºóÒ»¸ö»»ÐеÄ×Ö·û\nɾ³ýµô
¡¡¡¡if($string=~/cgi/){
¡¡¡¡¡¡¡¡print"ÊäÈëµÄ×Ö·û´®ÖÐÓÐcgiÕâ¸ö×Ö·û´®!\n";
¡¡¡¡}
¡¡¡¡Èç¹ûÊäÈëµÄ×Ö·û´®Öк¬ÓÐcgiÕâ¸ö×Ö·û´®µÄ»°,¾Í»áÏÔʾ³öÕâ¸öÐÅÏ¢¡£
Ö¸Áî:!~²»ÏàÅäÔËËã·û
˵Ã÷:ÕâÒ²ÊÇPerlÓïÑÔÖÐÌØÓеÄÓï·¨,ͨ³£»áºÍÎÄ×Ö´¦ÀíģʽÀ´×÷ÔËËã¡£
·¶Àý:
¡¡¡¡print"ÇëÊäÈëÒ»¸ö×Ö·û´®!\n";
¡¡¡¡$string=<STDIN>;¡¡#<STDIN>´ú±í±ê×¼ÊäÈë,»áÈÃʹÓÃÕßÊäÈëÒ»×Ö·û´®
¡¡¡¡chop($string);¡¡¡¡#½«$stdng×îºóÒ»¸ö»»ÐеÄ×Ö·û\nɾ³ýµô
¡¡¡¡if($string!~/cgi/){
¡¡¡¡¡¡¡¡print"ÊäÈëµÄ×Ö·û´®ÖÐûÓÐcgiÕâ¸ö×Ö·û´®!\n";
¡¡¡¡}
¡¡¡¡Èç¹ûÊäÈëµÄ×Ö·û´®ÖÐûÓк¬ÓÐcgiÕâ¸ö×Ö·û´®µÄ»°,¾Í»áÏÔʾ³öÕâ¸öÐÅÏ¢¡£
Ö¸Áî:trת»»º¯Êý
Óï·¨:tr/SEARCHLIST/REPLACELIST/
¡¡¡¡ÆäÖÐSEARCHLISTÊÇҪת»»µÄ×Ö·û,REPLACELISTÊÇת»»³ÉºÎÖÖ×Ö·û¡£
˵Ã÷:tr(translate)¾ÍÊÇת»»µÄÒâ˼,»á°Ñ·ûºÏת»»µÄ×Ö·ûת»»³ÉҪת»»µÄ×Ö·û¡£
·¶ÀýÒ»:
¡¡¡¡$string="test1ng";
¡¡¡¡$string=~tr/et/ET/;#´Ëʱ$string="TEsTing";
¡¡¡¡$string=~tr/a-z/A-Z/;#´Ëʱ$string="TESTING";
·¶Àý¶þ:
¡¡¡¡$string="CGI+Perl";
¡¡¡¡$string=~tr/+//;#´Ëʱ$string="CGI Perl";
¡¡¡¡ÔÚ´«ËÍCGIÊý¾ÝµÄʱºò»áÏȽ«Êý¾Ý±àÂë,ÆäÖлὫ¿Õ°×µÄ×Ö·ûת³É+Õâ¸ö×Ö·û,ËùÒÔ ÔÚ½âÂëµÄʱºòÒª°Ñ+Õâ¸ö×Ö·û»¹Ô³É¿Õ°×µÄ×Ö·û¡£
Ö¸Áî:sÈ¡´úº¯Êý
Óï·¨:s/PATTERN/REPLACE/eg
¡¡¡¡ÆäÖÐPATTERNÊÇÎÄ×Ö´¦Àí(Regular Expression)µÄģʽ,REPLACEÊÇ´ú±íÈ¡´ú³ÉºÎÖÖÎÄ×Ö Ä£Ê½¡£¶øgÊÇÕâ¸öº¯Êý×î³£ÓõIJÎÊý,´ú±íÒª°ÑËùÓзûºÏÎÄ×ÖģʽµÄ×Ö·û´®
È«²¿È¡´ú,Èç¹ûÊ¡ÂÔÕâ¸ö²ÎÊýµÄ»°,Ôòֻȡ´úÒ»¸ö·ûºÏÎÄ×ÖģʽµÄ×Ö·û´®;¶ø¼ÓÉÏeÕâ ¸ö²ÎÊýÊÇ´ú±íÒª½«REPLACEµÄ²¿·Öµ±³ÉÒ»¸öÔËËãʽ,Èç¹ûûÓÐÕâ¸öÐèÒªµÄ»°,¾Í²»ÓüÓ
ÉÏÕâ¸ö²ÎÊýÁË¡£
˵Ã÷:½«·ûºÏÎÄ×Ö´¦ÀíģʽµÄ×Ö·û´®È¡´ú³ÉΪҪȡ´úµÄ×Ö·û´®¡£
·¶ÀýÒ»:
¡¡¡¡$string="i;love;perl";
¡¡¡¡$string=~s/:/*/£º¡¡¡¡¡¡#´Ëʱ$string="i*love:perl";
¡¡¡¡$string=~s/:/*/g;¡¡¡¡¡¡#´Ëʱ$string="i*love*perl";
¡¡¡¡$stiing=~s/*/+/g;¡¡¡¡¡¡#´Ëʱ$string="i+love+perl";
¡¡¡¡$string=~s/+//g£º¡¡¡¡¡¡#´Ëʱ$string="i love perl";
¡¡¡¡ÉÏÒ»ÐÐÒ²¿Éд³É$string=~tr/+//;Ч¹û¶¼»áÒ»ÑùŶ!
¡¡¡¡$string=~s/per1/cgi/;¡¡#´Ëʱ$string="i love cgi";
·¶Àý¶þ:
¡¡¡¡$string="i love per";
¡¡¡¡$string=~s/(love)/<$1>/;
¡¡¡¡µÚÒ»¸ö()ÄÚËùÕÒµ½µÄ×Ö·û´®±ä³É$1,ÔÚÕâ¸ö·¶ÀýÖÐ,»á°Ñ±äÁ¿loveÕâ¸ö×Ö·û´®±ä³É <love>,´Ëʱ$string="i<love>perl";
¡¡¡¡$string="i love per1";
¡¡¡¡$string=~s/(i)(perl)/<$1><$2>/;
¡¡¡¡ÔÚÕâ¸ö·¶ÀýÖÐ,»á°Ñi±ä³É<i>,perl±ä³É<perl>´Ëʱ$string="<perl>love<i>";
¡¡¡¡$striag="i love per1";
¡¡¡¡$string=~s/(\w+)/<$1>/g;
¡¡¡¡(\w+)´ú±íÕÒѰ·ûºÏÒ»¸ö»òÊǶà¸öÓ¢ÎÄ×Ö·û»òÊÇÊýÖµµÄ×Ö·û´®,Ö®ºóÔÙ½«ÕÒµ½µÄ×Ö ·û´®Éè³É$l¡£ÒòΪ¼ÓÉÏgÕâ¸ö²ÎÊý,ËùÒÔ»áÕÒµ½×Ö·û´®ÖеÄÕâÈý¸öÓ¢Îĵ¥×Ö,
È»ºó ÔÙ°ÑÕâÈý¸öµ¥×Ö·Ö±ð¼ÓÉÏ<>Õâ¸ö·ûºÅ,´Ëʱ$string="<i><love><perl>";
·¶ÀýÈý:
¡¡¡¡$string="ww22cgi44";
¡¡¡¡$string=~s/(\d+)/$1*2/e;
¡¡¡¡(\d+)´ú±íÒªÕÒѰ$stringÖÐÒ»¸ö»òÊǶà¸öÊýÖµµÄ×Ö·û´®,ÔÙ½«ÕÒµ½µÄ×Ö·û´®Éè³É $1¡£¼ÓÉϲÎÊýeÊÇ´ú±íÒª°Ñ$l*2µ±×÷ÊÇÒ»¸öÔËËãʽ,ËùÒÔ$string="www44cgi44";
¡¡¡¡$string="www22cgi44";
¡¡¡¡$string=~s/(\d+)/$1*2/eg;
¡¡¡¡¼ÓÉϲÎÊýe,ËùÒÔ»á°Ñ$1*2µ±×÷ÊÇÒ»¸öÔËËãʽÀ´¿´, ¼ÓÉϲÎÊýg¾Í»á°ÑÈ«²¿·ûºÏÊý ÖµµÄ×Ö·û´®¾¹ýÔËËãʽÔËËãÖ®ºóÔÙ°ÑËüÈ¡´ú,ËùÒÔ$string="www44cgi88";
·¶ÀýËÄ:
¡¡¡¡¼ÙÉèÔ±¾µÄ×Ö·û´®ÊÇ$value="Èý°Ë!",¾CGIÊý¾Ý±àÂëÖ®ºó,Õâ¸ö×Ö·û´®¾Í»á±ä³É $value="%A4T%A4K%21"¡£ÒÔÏÂÊÇÒ»¸ö½âÂëµÄʾ·¶³ÌÐò:
¡¡¡¡$value="%A4T%A4K%2l"£»
¡¡¡¡$value=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($l))/eg;
¡¡¡¡ÔÚ´«ËÍCGIÊý¾ÝµÄʱºò»á°ÑÊý¾Ý±àÂë,ÆäÖÐ»á½«ÌØÊâ×Ö·û»òÊÇÖÐÎÄ×Ö·û±àÂë³ÉÒÔ% ¿ªÍ·µÄÁ¬ÐøÁ½¸öÊ®Áù½øÖÆÊýµÄ×Ö·û´®,ËùÒÔÒªÓÃsÕâ¸öº¯ÊýÀ´ÕÒѰÕâ¸öÒÔ%¿ªÍ·µÄ
×Ö·û´®¡£ÎªÁËÒª°ÑÕÒµ½µÄ×Ö·û´®ÔÙ×ö½âÂëµÄ´¦Àí, ËùÒÔÒªÔÚ%Õâ¸ö·ûºÅÖ®ºó¼ÓÉÏ ()Õâ¸ö·ûºÅ, ±íʾ»á°ÑÕÒµ½µÄ×Ö·û´®¼ÇÒäÆðÀ´²¢Ö¸¶¨¸ø$1Õâ¸ö±äÁ¿,¶øÇÒÒªÔÚ()
ÖмÓÉÏ´ú±íÊÇÁ¬ÐøÁ½¸öÊ®Áù½øÖÆÊýÖµµÄÎÄ×Ö´¦Àíģʽ(Regular Expression),Ò² ¾ÍÊÇ[a-fA-F0-9][a-fA-F0-9]¡£ÔÙÓÃhexÕâ¸öº¯Êý($1ÊÇ´ú±í·ûºÏµÄ×Ö·û´®)°ÑÊ®
Áù½øÖÆÊýֵת³ÉÊ®½øÖƵÄÂë,Ö®ºóÔÙÓÃpackÕâ¸öº¯Êý(ÒÔCΪ²ÎÊý,ÊÇ´ú±í unsigned char valueµÄÒâ˼)°ÑÕâ¸öÊ®½øÖÆÂ뻹ԳÉÔÀ´µÄ×Ö·û´®¡£×îºó¾Í»á
°ÑÕâ¸ö×Ö·û´®½âÂë³É$value="Èý°Ë!"¡£ÖµµÃÒ»ÌáµÄÊÇÒ²¿ÉÒÔ°ÑÕâ¸ö½âÂëµÄ³ÌÐò д³É:
¡¡¡¡$value=~s/%(..)/pack("C",hex($l))/eg;
¡¡¡¡ÔÚ´ËÌṩ¸ø¶ÁÕ߲ο¼¡£
6.4 Perl for Win32
¼ò½é
¡¡¡¡PerlÔ±¾Ö»ÄÜÔÚUnixϵͳÖÐʹÓÃ,ÕýÒòΪ¹¦ÄÜÇ¿´ó,ËùÒÔÕ⼸Äê¾ÍÓÐÈ˰ÑËüÒÆÖ²µ½¸÷ÖÖ
²Ù×÷ϵͳÉÏ¡£µ½Ä¿Ç°ÎªÖ¹,ÒѾ¿ÉÒÔÔÚUnix¡¢Linux¡¢FreeBSD¡¢Windows95¡¢WindowsNT¡¢ dos¡¢0S2¡¢MacitoshµÈ²Ù×÷ϵͳÖÐʹÓÃPerlÓïÑÔÁË¡£Ê¹ÓÃÕß¿ÉÒÔÔÚWindows32λµÄϵͳ
Èç:Windows95¡¢WindowsNTµÈ²Ù×÷ϵͳÖÐʹÓÃPerlÓïÑÔÀ´Ð´CGIÓ¦ÓóÌÐò¡£
¡¡¡¡ÔÚWindows95¡¢WindowsNTÕâЩ32λµÄϵͳÏÂʹÓÃPerlÀ´Ð´CGIÓ¦ÓóÌÐò֮ǰ,ÒªÏȰ²×° Ò»¸ö½ÐPerl for Win32µÄÈí¼þ¡£Õâ¸öÈí¼þÔ±¾×îÏÈÊÇÔÚWindows
NTϵͳÏÂʹÓõÄ,ËùÒÔ Ò²ÓÐÈ˽«Õâ¸öÈí¼þ³ÆÖ®ÎªNT Perl¡£Ëæ×Ű汾µÄ¸ÄÁ¼ÒÔ¼°Windows95²Ù×÷ϵͳµÄ³öÏÖ,ÏÖ ÔÚÒ²¿ÉÒÔÔÚWindows95²Ù×÷ϵͳÖÐʹÓÃPerlÓïÑÔÁË,ÔÚ±¾ÊéµÚ8ÕÂÖн«½éÉÜÈçºÎÔÚWindows95¡¢
Windows NTϵͳÖа²×°PerlÖ÷³ÌÐò,²¢»áÔÚµÚ8ÕÂÖнéÉÜÕâЩϵͳµÄCGI³ÌÐòд×÷ʵÀý¡£