<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
	<channel>
		<title>½ðÂóÍøÂç</title>
		<link>http://www.kingmx.com</link>
		<copyright>Copyright (C) 2006 ½ðÂóÍøÂç-Kingmx.com All Rights Reserved.</copyright>
		<item>
			<title>Perl ³£ÓÃº¯Êý</title>
			<link>http://www.kingmx.com/article.php?id=13164</link>
			<pubDate>2006-10-30</pubDate>
			<description><![CDATA[
Ö¸Áî£ºprint
Óï·¨£ºprint Filehandle LIST
ËµÃ÷£ºÕâ¸öFilehandle¿ÉÒÔ¿´×÷ÔÚI(INPUT)/O(OUTPUT)Ö®¼äµÄÒ»¸öÇÅÁº,¿ÉÒÔÀûÓÃFILEHANDLEÀ´×ö³öÊý¾Ý¶ÁÈëÐ´ ³öµÄ¶¯×÷.STDINÊÇ´ú±í´ÓÄÄÁ¬ÊäÈëÊý¾Ý,ÀýÈç´ÓµçÄÔµÄ¼üÅÌÊäÈë;STDOUTÊÇ´ú±í´ÓÄÄÁ¬Êä³öÊý¾Ý;ÀýÈç´ÓµçÄÔµÄÆÁ Ä»Êä³ö;STDERRÊÇ´ú±í´ÓÄÄÁ¬Êä³ö´íÎóµÄÊý¾Ý,ÀýÈç´ÓµçÄÔµÄÆÁÄ»Êä³ö.¶øÔÚPERLÓïÑÔÖÐÓÐÈý¸ö±ê×¼FILEHANDLE£º 1.STDIN(±ê×¼ÊäÈë)£ºÊÇ´ú±íSTDINµÄFILEHANDLE
2.STDOUT(±ê×¼Êä³ö)£ºÊÇ´ú±íSTDOUTµÄFILEHANDLE
3.STDERR(±ê×¼´íÎóÊä³ö)£ºÊÇ´ú±íSTDERRµÄFILEHANDLEÈç¹ûÒªÊ¹ÓÃÆäËûFILEHANDLEµÄÊ±ºò,¾ÍÒªÓÃOPENÕâ¸öº¯ÊýÀ´´ò¿ªÒ»¸öFILEHANDLE,ÎÒÃÇ¿ÉÒÔÓÃPRINTÕâ¸öº¯ÊýLISTµÄÊý¾ÝÊä³ö¸øFILEHANDLE.
ÔÚÎª´ó¼Ò½éÉÜPRINTÕâ¸öº¯ÊýÖ®Ç°,ÏÈÈÃÎÒÃÇÀ´¿´¿´PRINTº¯ÊýÖÐÌØÊâ´òÓ¡×Ö·û£º 
Ö¸Áî£º#
ËµÃ÷£º×¢ÊÍ·ûºÅRemarkÐû¸æ
Ê¾Àý£º#ÕâÊÇÒ»¸ö×¢ÊÍËµÃ÷
--------------------------------------------------------------------------------
Ö¸Áî£ºprint
Óï·¨£ºprint Filehandle LIST
ËµÃ÷£ºÕâ¸öFilehandle¿ÉÒÔ¿´×÷ÔÚI(INPUT)/O(OUTPUT)Ö®¼äµÄÒ»¸öÇÅÁº,¿ÉÒÔÀûÓÃFILEHANDLEÀ´×ö³öÊý¾Ý¶ÁÈëÐ´ ³öµÄ¶¯×÷.STDINÊÇ´ú±í´ÓÄÄÁ¬ÊäÈëÊý¾Ý,ÀýÈç´ÓµçÄÔµÄ¼üÅÌÊäÈë;STDOUTÊÇ´ú±í´ÓÄÄÁ¬Êä³öÊý¾Ý;ÀýÈç´ÓµçÄÔµÄÆÁ Ä»Êä³ö;STDERRÊÇ´ú±í´ÓÄÄÁ¬Êä³ö´íÎóµÄÊý¾Ý,ÀýÈç´ÓµçÄÔµÄÆÁÄ»Êä³ö.¶øÔÚPERLÓïÑÔÖÐÓÐÈý¸ö±ê×¼FILEHANDLE£º 1.STDIN(±ê×¼ÊäÈë)£ºÊÇ´ú±íSTDINµÄFILEHANDLE
2.STDOUT(±ê×¼Êä³ö)£ºÊÇ´ú±íSTDOUTµÄFILEHANDLE
3.STDERR(±ê×¼´íÎóÊä³ö)£ºÊÇ´ú±íSTDERRµÄFILEHANDLEÈç¹ûÒªÊ¹ÓÃÆäËûFILEHANDLEµÄÊ±ºò,¾ÍÒªÓÃOPENÕâ¸öº¯ÊýÀ´´ò¿ªÒ»¸öFILEHANDLE,ÎÒÃÇ¿ÉÒÔÓÃPRINTÕâ¸öº¯ÊýLISTµÄÊý¾ÝÊä³ö¸øFILEHANDLE.
ÔÚÎª´ó¼Ò½éÉÜPRINTÕâ¸öº¯ÊýÖ®Ç°,ÏÈÈÃÎÒÃÇÀ´¿´¿´PRINTº¯ÊýÖÐÌØÊâ´òÓ¡×Ö·û£º 
·ûºÅ Æä×÷ÓÃ
n »»ÐÐ new line
r ¹â±ê»»ÐÐ return
t tab¼ü
f »»Ò³ form feed
b ÍË»ØÒ»¸ñ
v ´¹Ö±tab¼ü
a ÏìÁåBell
e escape¼ü
07 Ê®½øÖÆASC IIÂë
xff Ê®Áù½øÖÆÂë
c[ ¿ØÖÆ×Ö·û
Ê¾Àý£º print STDOUT &quot;ÍøÉÏÑ§Ô°n&quot;; ½«&quot;ÍøÉÏÑ§Ô°&quot;¼ÓÉÏ»»ÐÐÏÔÊ¾ÔÚÆÁÄ»ÉÏ.
Óï·¨£º print LIST 
ËµÃ÷£º Èç¹ûÊ¡ÂÔFilehandleµÄ»°,¾Í»á°ÑFilehandleÄÚ¶¨ÎªSTDOUT.Ò²¾ÍÊÇ»á½«LISTµÄÊý¾ÝÄÚÈÝÏÔÊ¾ÔÚÆÁÄ»ÉÏ.
Ê¾Àý£º $url=&quot;www.netease.net/~zmd&quot;;
print &quot;ÍøÉÏÑ§Ô°$urln&quot;;
ÔÚÆÁÄ»ÉÏ½«»á³öÏÖ&quot;ÍøÉÏÑ§Ô°www.netease.net/~zmd&quot;,Èç¹ûÏëÒªÈÃË«ÒýºÅÄÚµÄ±äÁ¿Ê§Ð§,¿ÉÒÔÔÚ±äÁ¿µÄÇ°Ãæ¼ÓÉÏ&quot;&quot;·ûºÅ.ÀýÈç£º print&quot;ÍøÉÏÑ§Ô°$url&quot;; ÕâÑùËü¾ÍÏÔÊ¾£º&quot;ÍøÉÏÑ§Ô°$url&quot;
Óï·¨£º print
ËµÃ÷£º Í¬Ê¡ÂÔFilehandleºÍLISTµÄ»°,¾Í»áÒÔSTDOUTÎªFilehandle,²¢»áÊä³ö$_Õâ¸öÄÚ¶¨Êä³ö±äÁ¿µÄÊý¾ÝÄÚÈÝ. Èç¹û$_±äÁ¿ÊÇÒ»¸ö¿Õ×Ö·û´®µÄ»°,¾Í»áÏÔÊ¾³öÒ»¸ö¿Õ×Ö·û´®.
Ê¾Àý£º $_=&quot;ÍøÉÏÑ§Ô°n&quot;; print; ¾Í»á½«&quot;ÍøÉÏÑ§Ô°&quot;¼ÓÉÏ»»ÐÐÏÔÊ¾ÔÚÆÁÄ»ÉÏ 
--------------------------------------------------------------------------------
Ö¸Áî£º printf
Óï·¨£º printf Filehandle LIST
ËµÃ÷£º ÔÚperlÓïÑÔÖÐÒ²Ìá´úCÓïÑÔÖÐprintfµÄÓï·¨,ÓÃ·¨ºÍCÓïÑÔÖÐµÄÓÃ·¨Ò»Ä£Ò»Ñù.Èç¹û°ÑFilehandleÊ¡ÂÔµÄ»° ,Ò²Ò»Ñù»á°ÑSTDOUTµ±³ÉÊÇÄÚ¶¨µÄFilehandle.ÔÚÎª´ó¼Ò½éÉÜprintfº¯ÊýÖ®Ç°,ÏÈÈÃÎÒÃÇÀ´¿´¿´printfº¯ÊýÖÐ±ä»»·ûºÅµÄ×Ö·û.
·ûºÅ Æä×÷ÓÃ
%c ×Ö·û
%s ×Ö·û´®
%d ÕûÊý
%f ¸¡ÕûÊý
%h Ê®Áù½øÖÆÂë
%o °Ë½øÖÆÂë
Ê¾Àý£ºprintf(&quot;chomod%d%sn&quot;,&quot;711&quot;&quot;cgi&quot;); »á½«chmod 711 cgi¼ÓÉÏ»»ÐÐÏÔÊ¾ÓÚÆÁÄ»ÉÏ¡£ 
--------------------------------------------------------------------------------
Ö¸Áî£ºchop Óï·¨£ºchop($url)
ËµÃ÷£º°Ñ×îºóÒ»¸ö×Ö·ûÉ¾³ý¡£
Ê¾Àý£º$url=&quot;www.nease.net/~zmd/&quot;;
chop($url); ÕâÊ±$url=&quot;www.nease.net/~zmd&quot; ¶øÕâÁ½ÐÐÒ²¿ÉÒÔÐ´³Échop($url=&quot;www.nease.net/~zmd/&quot;); 
--------------------------------------------------------------------------------
Ö¸Áî£ºsplit
Óï·¨£ºsplit(/pattern/,$text,limit) ÆäÖÐ/pattern/ÊÇÎÄ×Ö´¦ÀíµÄÄ£Ê½£¬¶ølimitÊÇ´ú±íÒª·Ö¸îµÄ¸öÊý£¬Ò»°ã¿ÉÒÔÊ¡ÂÔ¡£
ËµÃ÷£ºÓÃÒ»¸öÖ¸¶¨µÄÎÄ×Ö´¦ÀíÄ£Ê½À´·Ö¸î$text×Ö·û´®¡£
Ê¾Àý£º
$text=&quot;Michael,Gevin,Mike&quot;; @name=split(/,/,$text); #ÕâÊ±@name=(&quot;Michael&quot;,&quot;Gevin&quot;,&quot;Mike&quot;); 
($a,$b,$c)=split(/,/,$text); #ÕâÊ±$a=&quot;Michael&quot;;$b=&quot;Gevin&quot;;$c=&quot;Mike&quot;; 
@name=split(/,/,$string,2); #ÕâÊ±@name=(&quot;Michael&quot;,&quot;Gevin&quot;);
ÔÚ´«ËÍCGIÓ¦ÓÃ³ÌÐòÊý¾ÝµÄÊ±ºò»áÏÈ½«Êý¾Ý±àÂë£¬ÆäÖÐ»á½«FORMÖÐµÚ¸öÊý¾Ý×Ö¶Î µÄÊý¾ÝÄÚÈÝÓÃ&amp;Õâ¸ö·ûºÅ¸ô¿ª£¬ËùÒÔÔÚ½âÂëµÄÊ±ºò¾ÍÒªÒÔ&amp;Õâ¸ö·ûºÅÎª·Ö¸îµÄ×Ö·û£¬½«Ã¿¸öÊý¾Ý×Ö¶Î·Ö¸î³ö¡£ÀýÈç£º $text=&quot;Mike=A&amp;Michael=B&quot;;
@name=split(/&amp;/,$text); #ÕâÊ±@name=(&quot;Mike=A&quot;,&quot;Michael=B&quot;); ¶øÊý¾Ý×Ö¶ÎµÄÃû³ÆºÍÕâ¸öÊý¾Ý×Ö¶ÎµÄÖµÊÇÓÃ=Õâ¸ö·ûºÅÀ´¸ô¿ª£¬Èç¹ûÏëÈ¡µÃÊý¾Ý ×Ö¶ÎµÄÃû³ÆºÍËù¶ÔÓ¦µÄÖµµÄ»°£¬¾ÍÓÃÒª=Õâ¸ö·ûºÅÀ´·Ö¸îÊý¾Ý×Ö¶Î£¬ÀýÈç£º $name=&quot;&quot;Mike=Michael&quot;&quot;£» 
($name1,$name2)=split(/=/,$list); #ÕâÊ±$name1=&quot;Mike&quot;;$name2=&quot;Michael&quot;; 
--------------------------------------------------------------------------------
Ö¸Áî£ºkeys
Óï·¨£ºkeys(%array)
ËµÃ÷£ºÈ¡³ö¹ØÁªÊý×é%ARRAYÖÐÈ«²¿µÄkey¡£
Ê¾Àý£º%NAME=(1,&quot;mike&quot;,2,&quot;michael&quot;); @readkey=keys(%NAMES); #ÕâÊ±@readkey=(1,2); 
--------------------------------------------------------------------------------
Ö¸Áî£ºvalues
Óï·¨£ºvalues(%array)
ËµÃ÷£ºÈ¡³ö¹ØÁªÊý×é%ARRAYÖÐÈ«²¿µÄvalue¡£
Ê¾Àý£º%NAMES=(1,&quot;mike&quot;,2,&quot;michael&quot;); @readval=values(%NAMES); #ÕâÊ±@readval=(&quot;mike&quot;,&quot;michael&quot;); 
--------------------------------------------------------------------------------
Ö¸Áî£ºreverse
Óï·¨£ºreverse(@array)
ËµÃ÷£º½«Êý×é@arrayÖÐµÄÔªËØÓÉºóµ½Ç°ÖØÐÂÅÅÁÐ¡£
Ê¾Àý£º@back=(&quot;A&quot;,&quot;B&quot;,&quot;C&quot;,&quot;D&quot;,&quot;E&quot;); @back=reverse(@back); #ÕâÊ±@back=(&quot;E&quot;,&quot;D&quot;,&quot;C&quot;,&quot;B&quot;,&quot;A&quot;); 
--------------------------------------------------------------------------------
Ö¸Áî£ºsort
Óï·¨£ºsort(@array)
ËµÃ÷£º½«Êý×éÖÐµÄÔªËØÓÉÐ¡µ½´óÅÅÐò£¬Èç¹ûÒªÓÉ´óµ½Ð¡ÅÅÐòµÄ»°£¬Òª¼ÓÉÏreverseÕâ¸öº¯Êý¡£
Ê¾Àý£º
@abc=(&quot;d&quot;,&quot;b&quot;,&quot;c&quot;,&quot;a&quot;); @abc=sort(@abc); #ÕâÊ±@abc=(&quot;a&quot;,&quot;b&quot;,&quot;c&quot;,&quot;d&quot;);
@abc=(reverse sort@abc); #ÕâÊ±@abc=(&quot;d&quot;,&quot;c&quot;,&quot;b&quot;,&quot;a&quot;); Õâ¸öÓï·¨Ò²¿ÉÒÔÐ´³É@abc=(reverse sort(@abc));
@number=(5,2,10); @number=sort(@number); ÉÏÃæÊ¾ÀýÓÃsortº¯ÊýÀ´ÅÅÐòÊýÖµµÄÊ±£¬»á³ö²î´í£¬Òò´ËÒªÓÃÏÂÃæµ½ÏÂÃæÕâÒ»¾ä¡£ @number=(sort{$a&lt;=&gt;$b}@number); #ÕâÊ±@number=(2,5,10); 
--------------------------------------------------------------------------------
Ö¸Áî£ºlength
Óï·¨£ºlength($string)
ËµÃ÷£ºÇó³ö×Ö·û´®$stringµÄ×Ö½Ú(bytes)Öµ¡£
Ê¾Àý£º$string=&quot;Perl5&quot;; $size=length($string); #ÕâÊ±$size=5; 
--------------------------------------------------------------------------------
Ö¸Áî£ºsubstr
Óï·¨£ºsubstr($string,offset,length) offset´ú±íÆðÊ¼×Ö·ûµÄÎ»ÖÃ,length´ú±íÒýÓÃµÄ×Ö·û´®³¤¶È£¬Èç¹ûÊ¡ÂÔlengthÔò´ú±í´ÓÆðÊ¼Öµµ½×Ö·û´®µÄ×îºóÒ»¸ö×Ö·û³¤¶È¡£¶øoffsetÈç¹ûÊÇ¸ºÖµµÄ»°£¬¾Í»á´Ó×Ö·û´®ÓÒ±ß¿ªÊ¼Ö¸¶¨×Ö·û¡£
Ê¾Àý£º
$s=substr(&quot;perl5&quot;,2,2); #ÕâÊ±$s=&quot;rl&quot;;
$s=substr(&quot;perl5&quot;,2); #ÕâÊ±$s=&quot;rl5&quot;;
$s=substr(&quot;perl5&quot;,-2,2); #ÕâÊ±$s=&quot;er&quot;; 
--------------------------------------------------------------------------------
Ö¸Áî£ºindex
Óï·¨£ºindex($string,$substring,position) $substringÊÇÒªÑ°ÕÒµÄ×Ö·û£»position´ú±í´ÓÄÄÒ»¸öÎ»ÖÃ¿ªÊ¼Ñ°ÕÒ£¬¼ÙÈçÊ¡ÂÔposition¾Í´ÓÍ·¿ªÊ¼ÕÒÆð¡£
ËµÃ÷£º·µ»ØËùÒªÕÒÑ°µÄ×Ö·ûÔÚÒ»×Ö·û´®$stringÖÐµÄÎ»ÖÃ£¬Èç¹ûÔÚ×Ö·û´®ÖÐÕÒ²»µ½×Ö·ûµÄ»°£¬Ôò»á·µ»Ø-1Õâ¸ö Öµ¡£
Ê¾Àý£º
$s=index(&quot;perl5&quot;,&quot;p&quot;); #ÕâÊ±$s=0
$s=index(&quot;perl5&quot;,&quot;l&quot;,2); #ÕâÊ±$s=3
$s=index(&quot;perl5&quot;,&quot;perl&quot;); #ÕâÊ±$s=-1 
--------------------------------------------------------------------------------
Ö¸Áî£ºpush
Óï·¨£ºpush(@array,$string)
ËµÃ÷£ºÔÚÊý×é@arrayµÄ×îºó¸½¼ÓÐÂµÄÔªËØ ($string)µ½Êý×é@arrayÖÐ¡£
Ê¾Àý£º@array=(&quot;one&quot;,&quot;two&quot;); push(@array,&quot;three&quot;); #ÕâÊ±$@array=(&quot;one&quot;,&quot;two&quot;,&quot;three&quot;) 
--------------------------------------------------------------------------------
Ö¸Áî£ºpop
Óï·¨£ºpop(@array)
ËµÃ÷£º½«Êý×é(@array)µÄ×îºóÒ»¸öÔªËØÉ¾³ý£¬²¢½«É¾³ýµÄÔªËØ·µ»Ø¡£
Ê¾Àý£º@array=(&quot;one&quot;,&quot;two&quot;); $rm=pop(@array); #ÕâÊ±@array=(&quot;one&quot;);¶ø$rm=&quot;two&quot;; 
--------------------------------------------------------------------------------
Ö¸Áî£ºunshift
Óï·¨£ºunshift(@array,$string) ËµÃ÷£ºÔÚÊý×é@arrayµÄµÚÒ»¸öÔªËØÇ°¸½¼ÓÐÂµÄÔªËØ$stringµ½Êý×é@arrayÖÐ¡£ Ê¾Àý£º @array=(&quot;one&quot;,&quot;two&quot;); unshift(@array,&quot;three&quot;); #ÕâÊ±@array=(&quot;three&quot;,&quot;one&quot;,&quot;two&quot;) 
--------------------------------------------------------------------------------
Ö¸Áî£ºshift
Óï·¨£ºshift(@array)
ËµÃ÷£º½«Êý×é@arrayµÄµÚÒ»¸öÔªËØÉ¾³ý£¬²¢½«É¾³ýµÄÔªËØ·µ»Ø¡£
Ê¾Àý£º@array=(&quot;one&quot;,&quot;two&quot;); @rm=shift(@array); #ÕâÊ±@array=(&quot;two&quot;);¶ø$rm=&quot;one&quot;; 
--------------------------------------------------------------------------------
Ö¸Áî£ºjoin
Óï·¨£ºjoin($string,@array)
ËµÃ÷£ºÔÚÒ»Êý×é@arrayµÄÔªËØÖ®¼ä¼ÓÉÏÒ»Ö¸¶¨µÄ×Ö·û$string,²¢½«½á¹û·µ»Ø¡£
Ê¾Àý£º
@array=(&quot;one&quot;,&quot;two&quot;,&quot;three&quot;);
$total=join(&quot;£º&quot;,@array); ÕâÊ±$total=&quot;one£ºtwo£ºthree&quot;; 
--------------------------------------------------------------------------------
Ö¸Áî£ºgrep
Óï·¨£ºgrep(/pattern/,@array)
ËµÃ÷£º½«ºÏÎÄ×Ö´¦ÀíÄ£Ê½(regular expression)µÄÊý×éÔªËØÕÒ³öÀ´¡£
Ê¾Àý£º
@array=(&quot;one&quot;,&quot;on&quot;,&quot;in&quot;);
$count=grep(/on/,@array); #ÕâÊ±$count=2
@result=grep(/on/,@array);#ÕâÊ±@result=(&quot;one&quot;,&quot;on&quot;); 
--------------------------------------------------------------------------------
Ö¸Áî£ºhex
Óï·¨£ºhex($string)
ËµÃ÷£º½«Ê®Áù½øÖÆµÄÊýÖµ×ª³ÉÊ®½øÖÆ¡£
Ê¾Àý£º $decimal=hex(&quot;ff&quot;); ÕâÊ±$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¼Ó1Ö®ºó£¬²ÅÄÜ·ûºÏÊµ¼ÊÇé¿ö¡£$year´Ó1990ÄêËãÆðµÄÄêÊý $wday´ÓÐÇÆÚÁùËãÆð£¬´ú±íÊÇÔÚÕâÖÜÖÐµÄµÚ¼¸Ìì[0-6] $yday´ÓÒ»ÔÂÒ»ÈÕËãÆð£¬´ú±íÊÇÔÚÕâÄêÖÐµÄµÚ¼¸Ìì[0,365] $isdstÖ»ÊÇÒ»¸öflag ÖªµÀÕâÐ©±äÁ¿Ö®ºó£¬¾Í¿ÉÒÔÔÚCGIÓ¦ÓÃ³ÌÐòÖÐÄÃÀ´Ó¦ÓÃÁË¡£´ËÍâ£¬Ò²¿ÉÒÔÓÃÏÂÃæÕâÒ»ÐÐÖ¸ÁîÔÚUNIXÏµÍ³ÏÂÈ¡µÃÏµÍ³µÄÊ±¼ä¡£ÎªÁË±ÜÃâ´íÎó·¢Éú£¬×îºÃÓÃ¾ø¶ÔÂ·¾¶µÄ·½·¨À´È¡µÃÏµÍ³Ê±¼ä£¬Èç¹û¾ø¶ÔÂ·¾¶²»Çå³þµÄ»°¿ÉÒÔÓÃ&quot;which data&quot;Õâ¸öÖ¸ÁîÀ´µÃÖª¡£×îºóÒªÌá×Ö·ûµÄ»°£¬¾Í²»ÄÜÕýÈ·Ö´ÐÐÏµÍ³µÄ³ÌÐòÁË¡£ $data='/usr/bin/data'; ¶øÔÚperl5°æ±¾ÖÐ£¬Ò²¿ÉÒÔÓÃÏÂÃæÕâÒ»ÐÐÖ¸ÁîÀ´È¡µÃÏµÍ³Ê±¼ä¡£ $data=localtime(time); 
--------------------------------------------------------------------------------
Ö¸Áî£ºdie
Óï·¨£ºdie LIST
ËµÃ÷£º»á°ÑLIST×Ö·û´®ÏÔÊ¾³öÀ´£¬²¢ÍË³ö³ÌÐò¡£³£³£ºÍ$!Õâ¸ö´ú±í´íÎóÐÅÏ¢±äÁ¿Ò»ÆðÊ¹ÓÃ¡£
Ê¾Àý£ºopen(FILE,&quot;$filename&quot;)||die &quot;²»ÄÜ´ò¿ªÎÄ¼þ$!n; Èç¹û´ò¿ªÎÄ¼þÊ§°ÜµÄ»°£¬¾Í»áÏÔÊ¾³ö´íÎóµÄÐÅÏ¢£¬Ö®ºóÔÙÍË³ö³ÌÐò¡£ 
]]></description>
		</item>
		<item>
			<title>ÊÜÏÞÖÆ»·¾³°²×°PerlÄ£¿é·½·¨</title>
			<link>http://www.kingmx.com/article.php?id=13020</link>
			<pubDate>2006-10-25</pubDate>
			<description><![CDATA[

¼ò½é£º
ÕâÆªÎÄÕÂ¾ßÌå½²ÊöÁË£¬¹ØÓÚÈçºÎÔÚÊÜÏÞÖÆµÄÏµÍ³»·¾³ÖÐ£¬°²×°¿çÆ½Ì¨ÓëÒÀÀµÆ½Ì¨µÄÄ£¿é¡£ÕâÑù¼´Ê¹ÄãµÄ·þÎñÆ÷²»Ö§³ÖDBD::mysql£¬ÄãÒ²¿ÉÒÔÔÚÍøÕ¾ÖÐÁ¬½ÓMySQLÁË£¬µ±È»±Ø±¸µÄÒ»¸öÌõ¼þ±ØÐëÊÇ¿ÉÒÔÍ¨¹ýFTPÀ´ÉÏ´«ÎÄ¼þ¡£nbsp;
Èç¹ûÄãµÄÖ÷»ú·þÎñÉÌÖ»Ìá¹©FTPÈ¨ÏÞ¸øÄã£¬¶øÇ¡ÇÉÄãµÄÀÏ°åÈ´ÈÃÄãÔËÐÐÒ»¸ö´øÓÐMySQLÊý¾Ý¿â²Ù×÷µÄ³ÌÐò£¬ÄÇÃ´Èç¹ûÕâÊ±ÎÒÃÇÖ»Ïë¸ø·þÎñÆ÷ÉÏµÄÄ³¸ö³ÌÐò¼ÓÉÏÒ»Ð©Ä£¿é£¬¶øÓÖ²»´òËãÐÞ¸ÄÏµÍ³½á¹¹µÄ»°£¬ÕâÊ±µÄ×´¿öÎÞÒÉÌýÆðÀ´ÏóÊÇÃæÁÙÊ®·ÖÑÏÖØµÄ¶òÔË£¬ËùÒÔ£¬ÎÒÃÇÒ²Ö»ºÃÊ¹ÓÃÒ»Ð©ÁíÀàµÄ·½·¨À´½â¾öÎÊÌâ¡£

ÏëÏóÒ»ÏÂ£¬ÎÒÃÇÔÚ½øÐÐÄ£¿é°²×°Ê±,·³ËöµÄ¹ý³ÌÖ»ÊÇ½øÐÐ±àÒë¶þ½øÖÆ´úÂë£¨ÊÊºÏÕâ¸ö»úÆ÷ÔËÐÐµÄ£©ºÍÒ»Ð©´¿PerlµÄÄ£¿éµÄ¼òµ¥¹¤×÷¡£ÄÇÃ´ÕâÊ±Ö»ÒªÎÒÃÇÄÜ°ÑÏàÍ¬»·¾³µÄÕâÐ©Ä£¿é£¬¸´ÖÆµ½ÄãµÄÄ¿±êÏµÍ³¾Í¿ÉÒÔÍê³ÉÄ£¿éµÄ°²×°¡£µ±È»£¬ÕâÊÇÐèÒªÒ»Ð©¹ý³ÌµÄ¡£

ÒÔÏÂµÄ°²×°·½·¨ÔÚVMWAREÏÂµÄRedhat9ÖÐ²âÊÔÍ¨¹ý£¬ÏµÍ³ÖÐÃ»ÓÐDBD¡¢DBI¡¢Mysqlclient¿â£¬°²×°µÄÊ±ºòÖ»Ê¹ÓÃÁËÆÕÍ¨ÓÃ»§Éí·Ý¡£

Ê×ÏÈÄãÒª×¼±¸Ò»¸öÒÑ¾­°²×°ÕâÐ©Ä£¿éµÄ¶ÔÕÕ»ú£¬²¢ÇÒÍ¬ÄãµÄÄ¿±ê»ú²Ù×÷ÏµÍ³¼æÈÝ¡£nbsp;
ÔÙ´ÎÄãÒªÓÐÒ»ÖÖ·½Ê½¿ÉÒÔ½«Ò»Ð©ÎÄ¼þ¸´ÖÆµ½ÄãµÄÄ¿±êÏµÍ³ÖÐ£¬²¢ÇÒ¿ÉÒÔÔËÐÐPerl³ÌÐò×ö²âÊÔ¡£nbsp;
°²×°DBIÄ£¿énbsp;
ÔÚÄ¿±êÏµÍ³ÖÐÐ´Ò»¸ö²âÊÔ´úÂë¡£nbsp;
#!/usr/bin/perl

usenbsp;DBI;

printnbsp;"Hellonbsp;World!";

*nbsp;ÔËÐÐÕâ¸ö´úÂë£¬Äã½«ºÜÈÙÐÒµÄµÃµ½´íÎó¡£

Can'tnbsp;locatenbsp;DBI.pmnbsp;innbsp;@INCnbsp;(@INCnbsp;contains
.........
BEGINnbsp;failed--compilationnbsp;abortednbsp;at.....

ÐÞ¸ÄÕâ¸ö´úÂë£¬ÈÃËû½øÐÐ²éÕÒModulesµÄ¿â¶àÒ»¸ö±¾µØÂ·¾¶¡£nbsp;
#!/usr/bin/perl

usenbsp;FindBinnbsp;qw($Bin);
usenbsp;libnbsp;"$Bin";
usenbsp;DBI;

printnbsp;"Hellonbsp;World!";

²é¿´¶ÔÕÕ»ú´æ·ÅÄ£¿éµÄÄ¿Â¼Ò»°ãÊÇ/usr/lib/perl5/xxx/site_perl»òc:perlsite_perlÄã»á·¢ÏÖÀïÃæÓÐÒ»¸öDBI.pmnbsp;°ÑÕâ¸öÎÄ¼þÖ±½Ó¸´ÖÆµ½ÄãÕâÌ¨»úÆ÷ÉÏ£¬»¹ÓÐÒ»¸ö½ÐDBIµÄÄ¿Â¼£¬ÄãÒ²ÍêÈ«¸øËü¸´ÖÆµ½Õâ¸öÄ¿±ê»úÉÏ£¬ÔÙÔËÐÐ¸Õ²ÅµÄ³ÌÐò£¬Äã»áµÃµ½ÕâÑùµÄ½á¹û¡£nbsp;
Can'tnbsp;locatenbsp;loadablenbsp;objectnbsp;fornbsp;modulenbsp;DBInbsp;innbsp;@INCnbsp;(@INCnbsp;contains..
......
BEGINnbsp;failed--compilation.......

²é¿´¶ÔÕÕ»úµÄautoÄ¿Â¼£¬ÀïÃæÒ²ÓÐÒ»¸öDBIÄ¿Â¼¡£Äã²Â¶ÔÁË£¬ÄãÒªÔÚÄ¿±ê»úÉÏÕÕÑù×Ó½¨Ò»¸öautoÄ¿Â¼£¬ÔÙÕÕÑù×Ó½¨Ò»¸öDBI°Ñ¶«Î÷¸´ÖÆ¹ýÀ´¡£Çë×¢ÒâÔÚLinuxÏµÍ³ÏÂÊÇÓÐ´óÐ¡Ð´Çø±ðµÄ¡£

ÔÙ´ÎÔËÐÐ¸Õ²ÅµÄ³ÌÐò£¬ÄãÓ¦¸Ã³É¹¦ÁË¡£nbsp;
Hellonbsp;World!

°²×°DBD::mysql

ÏÈ°Ñ´úÂë×öÒ»´ÎÐÞ¸Ä¡£nbsp;
#!/usr/bin/perl

usenbsp;FindBinnbsp;qw($Bin);
usenbsp;libnbsp;"$Bin";
usenbsp;DBI;
$dbh=DBI-&gt;connect("DBD:mysql:database=test");
$sth=$dbh-&gt;prepare("selectnbsp;version()");
$sth-&gt;execute();
$row=$sth-&gt;fetchrow_arrayref();
printnbsp;$row-&gt;[0];

¸ú°²×°DBIµÄÄ£Ê½»ù±¾ÏàÍ¬,¸´ÖÆ¶ÔÕÕ»úDBDÄ¿Â¼ÖÐµÄmysql.pmºÍmysql×ÓÄ¿Â¼µ½Ä¿±ê»úµÄÍ¬ÑùÄ¿Â¼¡£

ÔÙ¸´ÖÆautoÏÂdbdÄ¿Â¼ÖÐµÄmysql.pmºÍmysqlÄ¿Â¼µ½¶ÔÕÕ»úÉÏ¡£

ÔËÐÐ¸Õ²ÅÐÞ¸ÄºÃµÄ³ÌÐò£¬Ò»ÇÐÍê³É¡£nbsp;
»¹²»ÐÐÔõÃ´°ì

×îÈÝÒ×³öÏÖµÄÎÊÌâÊÇÄã°ÑÄ¿Â¼¸ã´íÁË¡£Çë×ÐÏ¸²é¿´ÄãÄ¿Â¼ÊÇ·ñ´íÁË¡£±ÈÈçÒªÓÐ/auto/dbd/mysqlÄãÊÇ²»ÊÇ½¨³É/auto/dbd/dbd/mysqlÁË?

ÎªÊ²Ã´»áÕâÑù

Èí¼þ°²×°²»Íâºô±àÒë°²×°¡¢¸´ÖÆ¶þ½øÖÆÂëÁ½ÖÖ¡£¶øÎÒÃÇÕâÖÖ¿ÉÒÔ³ÆÎªÊÖ¹¤¸´ÖÆ¶þ½øÖÆÂë¡£Ö»ÒªÄãÉèÖÃºÃFindBinºóÔÙÏ¸ÐÄµÄ½«Ò»Ð©±ØÒªµÄÄ£¿é¸´ÖÆ¹ýÀ´¾Í»ù±¾¶¼¿ÉÒÔÔËÐÐ¡£µ«ÊÇÈç¹ûÕâ¸öÄ£¿é»¹ÒÀÀµÆäËûµÄ¿â±ÈÈçImageMagick¿â£¬ÄÇÃ´Äã¾ÍÒªÏë°ì·¨°ÑÄÇ¸ö¿âÒ²¸ãµ½ÕâÌ¨»úÆ÷ÉÏÀ´ÁË¡£

»ù±¾°²×°¹æÔò

Äã±ØÐëÈÃ½âÎöÆ÷ÖªµÀÄãµÄÄ£¿éÔÚÄÇÀïÕâ¸öÒÀÀµFindBin½¨Òé°ÑFindBinºÍusenbsp;lib¶¼·ÅÔÚ×îÏÈµÄ¼¸ÐÐ¡£nbsp;
°ÑÏëÒªÊµÏÖ¹¦ÄÜµÄÄ£¿é°´ÕÕÔ­À´µÄ½á¹¹¸´ÖÆµ½ÄãµÄÄ¿±ê·þÎñÆ÷ÖÐ¡£nbsp;
±£Ö¤¶ÔÕÕ»úºÍÄ¿±ê»úµÄÏµÍ³ÊÇ¼æÈÝµÄ£¬·ñÔò¶þ½øÖÆµÄÄ£¿é½«³ö´í¡£nbsp;
´Ë·½·¨£¬ÓÉPerlchinaµÄ»áÔ±Éµ¹Ï²âÊÔÔÚwindowsÏÂÍ¨¹ý¡£

Ï£ÍûÕâÐ©·½·¨ÄÜ¶ÔÄãÓÐÓÃ´¦¡£ 
]]></description>
		</item>
		<item>
			<title>Ñ­»·¿ØÖÆPerl½Å±¾Á÷³Ì·½·¨Ì¸</title>
			<link>http://www.kingmx.com/article.php?id=12978</link>
			<pubDate>2006-10-24</pubDate>
			<description><![CDATA[

ÁË½âPerlÓï¾ä¡¢±äÁ¿ºÍÔËËã·ûµÄ»ù´¡ÖªÊ¶£¬²¢½¨Á¢µÚÒ»¸ö¼òµ¥µÄ³ÌÐòºó£¬ÄúÏ£Íû½øÒ»²½ÉîÈëÑ§Ï°¡£ÄúÄÜÑ§»áµÄ×îÖØÒªµÄÒ»ÏîÄÚÈÝÊÇ¿ØÖÆPerl³ÌÐòÁ÷³Ì¡ª¡ªÀýÈç£¬¸ù¾Ý²»Í¬µÄÇé¿ö·ÖÀë´úÂë£¬»òÖØ¸´ÔËÐÐ´úÂë¿é£¬¶ÔÒ»¸öÌØ¶¨µÄÊý¾Ý×é½øÐÐÈ«ÃæÌ½²é¡£

±¾ÎÄ½«½éÉÜºóÒ»ÖÖÇé¿ö£¬ÎªÄúËµÃ÷ÔÊÐíÄúÖØ¸´Ö´ÐÐÒ»×éPerlÓï¾äµÄ¸÷ÖÖPerl½á¹¹¡£ÕâÖÖÖØ¸´Ö´ÐÐ½Ð×öÑ­»·£¬ÕâÐ©Ñ­»·ÔÚ´ó¶àÊýPerl½Å±¾ÖÐ·¢»Ó×ÅÖØÒª×÷ÓÃ¡£ÏÂÃæÎÒÃÇÀ´½øÐÐËµÃ÷¡£

WhileÑ­»·

PerlÖÐ×î»ù±¾µÄÑ­»·ÎªËùÎ½µÄwhile()Ñ­»·£¬ËüÔÊÐíÄúÔÚÒ»¸öÌØ¶¨µÄÌõ¼þ±£³ÖÎªÕæµÄÇé¿öÏÂ£¬ÖØ¸´Ö´ÐÐÒ»×éÓï¾ä¡£Õâ¸öÌõ¼þÊÇÒ»¸ö±ê×¼µÄPerlÌõ¼þ±í´ïÊ½£¬¿ÉÓÉ½âÎöÆ÷¼ÆËãËüµÄÖµ£¬ÔÙ·µ»ØÕæ»ò¼ÙÖµ¡£ÏÂÃæÊÇÒ»¸ö¼òµ¥µÄÀý×Ó£¨ÁÐ±íA£©£º

ÁÐ±íA

#!/usr/bin/perl

# define number array

@nums = (1..18);

# define counter

$count = 0;

# run loop while number is less than 12

while ($nums[$count] &lt; 12) {

print $nums[$count];

$count++;

}

ÔÚÕâ¸öÀý×ÓÖÐ£¬Ö»Òª·¶Î§ÄÚµÄÊý×ÖÐ¡ÓÚ12£¬¾Í½«Ëü´òÓ¡³öÀ´¡£ÊýÖµµ½12Ê±£¬Ìõ¼þ±í´ïÊ½²»ÔÙµÃµ½Âú×ã£¬ËùÒÔ²»ÔÙ´òÓ¡Êý×Ö¡£

ÏÂÃæÊÇÁíÒ»¸ö¸ü¼ÓÊµÓÃµÄÀý×Ó£¨ÁÐ±íB£©£º

ÁÐ±íB

#!/usr/bin/perl

# define variables

$fact = 1;

$num = 5;

# calculate and print the factorial

while($num &gt; 1){

$fact = $fact * $num;

$num--;

}

print $fact;

Õâ¸öÀý×ÓÓÃwhile()Ñ­»·ÓÉ5µ¹ÊýÖÁ1£¬Ã¿¸ö½×¶ÎµÄÖµÓëÇ°Ò»¸ö½×¶ÎµÃµ½µÄÖµÏà³Ë¡£×îºó£¬ÖÕÖµÎª5µÄ½×³Ë£¬»ò120¡£

UntilÑ­»·

Óëwhile()Ñ­»·Ïà·´µÄÊÇuntil()Ñ­»·£¬Ö±µ½Ä³¸öÌØ¶¨µÄÌõ¼þÎª¼ÙÇ°£¬Ñ­»·Ò»Ö±Ö´ÐÐ¡£Òò´Ë£¬until()Ñ­»·ÖÐµÄÌõ¼þ±í´ïÊ½Óëwhile()Ñ­»·ÖÐµÄ±í´ïÊ½ÕýºÃÏà·´¡£ÏÂÃæÊÇÒ»¸öÀý×Ó£¨ÁÐ±íC£©£º

ÁÐ±íC

#!/usr/bin/perl

# define number array

@nums = (1..18);

# define counter

$count = 0;

# run loop while number is less than 12

until ($nums[$count] &gt;= 12) {

print $nums[$count];

$count++;

}

ÎÒÃÇ»¹¿ÉÒÔÓÃuntil()Ñ­»·ÖØÐ´½×³ËµÄÀý×Ó£¬ÈçÁÐ±íDËùÊ¾£º

ÁÐ±íD

#!/usr/bin/perl

# define variables

$fact = 1;

$num = 5;

# calculate and print the factorial

until($num &lt; 1){

$fact = $fact * $num;

$num--;

}

print $fact;

ForÑ­»·

ËüÊÇPerlÖÐ×î³£ÓÃµÄÑ­»·Ö®Ò»£¬for()Ñ­»·ÓÃÀ´ÖØ¸´Ö´ÐÐÒ»¸ö´úÂë¿é£¬Ö´ÐÐµÄ´ÎÊýÔ¤ÏÈÖ¸¶¨¡£Õâ¸öÑ­»·Í¨¹ýÒ»¸ö¼ÆÊýÆ÷±äÁ¿ÔËÐÐ£¬±äÁ¿±»³õÊ¼»¯ÎªÒ»¸öÌØ¶¨µÄÖµ¡£½ÓÏÂÀ´£¬¶ÔÒ»¸öÌõ¼þ±í´ïÊ½½øÐÐ²âÊÔ£¬Èç¹û½á¹ûÎªÕæ£¬¾ÍÖ´ÐÐ´úÂë¿é£¬±äÁ¿µÝÔö£¨»òµÝ¼õ£©¡£²»¶ÏÖ´ÐÐ´úÂë£¬Ö±µ½±í´ïÊ½½á¹ûÎª¼Ù¡£

ÁÐ±íEÊÇÒ»¸ö¼òµ¥µÄÀý×Ó£º

ÁÐ±íE

#!/usr/bin/perl

# define number array

@nums = (1..18);

# run loop while number is less than 12

for ($x=0; $x&lt;11; $x++) {

print $nums[$x];

}

ÔÚÕâ¸öÀý×ÓÖÐ£¬Ñ­»·¼ÆÊýÆ÷µÄ³õÊ¼ÖµÎª0¡£½ÓÏÂÀ´£¬¶ÔÌõ¼þ±í´ïÊ½½øÐÐ²âÊÔ£¬Èç¹û½á¹ûÎªÕæ£¬¾Í´òÓ¡ÏàÓ¦µÄÊýÁÐÔªËØ¡£¼ÆÊýÆ÷µÝÔö£¬ÎªÏÂÒ»¸öÑ­»·×ö×¼±¸¡£ÕâÒ»¹ý³ÌÒ»Ö±³ÖÐøµ½µÚ12¸öÊýÁÐÔªËØ£¬ÕâÊ±Ìõ¼þ±í´ïÊ½µÄ½á¹ûÎª¼Ù£¬Ñ­»·±»ÖÕÖ¹¡£



Ò²¿ÉÒÔÓÃfor()Ñ­»·ÖØÐ´½×³ËµÄÀý×Ó£¬ÈçÁÐ±íFËùÊ¾£º

ÁÐ±íF

#!/usr/bin/perl

# define variables

$fact = 1;

$num = 5;

# calculate and print the factorial

for ($x=5; $x&gt;1; $x--) {

$fact = $fact * $x;

}

print $fact;

Õâ¸öÉÔÓÐ²»Í¬£¬ÒòÎªÃ¿´ÎÑ­»·¼ÆÊýÆ÷±äÁ¿²»ÊÇµÝÔö£¬¶øÊÇµÝ¼õ¡£ÕâÑù¾Í¿ÉÒÔÓÉ5µ¹ÊýÖÁ1£¬ÕâÊ±Ìõ¼þ±í´ïÊ½Îª¼Ù£¬Ñ­»·ÖÕÖ¹¡£$factµÄ½á¹ûÖµÎª5µÄ½×³Ë¡£

ForeachÑ­»·

ForeachÑ­»·ÊÇÒ»¸öÓÐÐ©ÌØÊâµÄÑ­»·¡ª¡ªÖ»ÓÐPerlµÄÊý×é±äÁ¿ÄÜ¹»Ê¹ÓÃÕâ¸öÑ­»·¡£¸ÃÑ­»·¿ÉÒÔ·½±ãµØÖØ¸´Êý×éµÄÃ¿Ò»¸öÔªËØ£¬ÒÀ´Î¶ÔËüÃÇ½øÐÐ´¦Àí¡£ÁÐ±íGÊÇÒ»¸öÀý×Ó£º

ÁÐ±íG

#!/usr/bin/perl

# define number array

@nums = (1..18);

# iterate through array elements

foreach $n (@nums) {

print "$n ";

}

ÕâÀï£¬foreach()Ñ­»·½á¹¹±»Ìá½»¸øÒ»¸öÊý×é±äÁ¿£¬ÔÚÕâ¸öÀý×ÓÖÐËü°üº¬18¸öÔªËØ¡£Ñ­»·Ã¿ÖØ¸´Ò»´Î£¬µ±Ç°Ñ¡ÖÐµÄÔªËØ±»·ÖÅä¸øÁÙÊ±±äÁ¿$n£¬²¢ÒÔÄ³ÖÖ·½Ê½½øÐÐ´¦Àí£¨ÔÚ±¾ÀýÖÐ¼òµ¥ÔÚÖÕ¶Ë´òÓ¡£©¡£Ñ­»·¼ÌÐø½øÐÐ£¬Ö±µ½ËùÓÐµÄÊý×éÔªËØ°´Ë³Ðò´¦ÀíÍê±Ï¡£

ÔÚ´¦ÀíÊý×éÊ±£¬foreach()Ñ­»·Òª´ó´óÓÅÓÚfor()Ñ­»·ºÍwhile()Ñ­»·£¬Ö÷ÒªÊÇÒòÎªËü²»ÐèÒªÒ»¸ö¼ÆÊýÆ÷±äÁ¿ÊÖ¹¤×·×ÙËüÔÚÊý×éÖÐµÄÎ»ÖÃ£»Õâ¸öÈÎÎñÔÚÄÚ²¿½øÐÐ´¦Àí£¬Ê¹ÕâÒ»Ñ­»·ÔÚ´¦ÀíÊý×éÊ±¼òµ¥¶øÍ¸Ã÷¡£

³£ÓÃÑ­»·

ÕâËÄ¸öÑ­»·ÊÇPerlÖÐ×î³£ÓÃµÄÑ­»·¡ª¡ªºÜÉÙÓÐ½Å±¾²»»áÓÃµ½ËüÃÇ¡£Ï£ÍûÉÏÃæµÄ¼ò¶ÌÊµÀýÓëËµÃ÷ÄÜ¹»°ïÖúÄúÁË½âËüÃÇ£¬²¢¿ªÊ¼ÔÚÊµ¼ÊÊµ¼ùÖÐ¼ÓÒÔÓ¦ÓÃ¡£±àÂë¿ìÀÖ£¡
]]></description>
		</item>
		<item>
			<title>Kwiki °²×°±Ê¼Ç</title>
			<link>http://www.kingmx.com/article.php?id=12908</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[
Èç¹û¿ÉÒÔ£¬²»·ÁÏÈÊÔÊÔ×îÏÂÃæµÄÄÇÖÖ×î¼òµ¥µÄ·½·¨¡£ 
ÏÂÔØ×îÐÂ°æ±¾µÄKwiki£¬KwikiµÄhomepage: http://www.kwiki.org.
KwikiµÄÕû¸ö³ÌÐòÏµÍ³¾ÍÊÇÒ»¸öindex.cgiÈ»ºóµ÷ÓÃKwikiµÄÄ£¿é¡£ËùÓÐµÄKwiki¹¦ÄÜ¶¼ÓÐÄ£¿éËù³É¡£ÕâÀïÔÝÊ±²»ÌÖÂÛ³ÌÐòÎÊÌâ¡£½²½²ÎÒÔÚWin32ÏÂµÄ°²×°£¨ÆäËûOSÀàËÆ£©¡£
Kwiki³ÌÐò»¹µ÷ÓÃÁËKwiki×÷ÕßÐ´µÄÁíÁ½¸öÄ£¿é£¬¶øËüÃÇÃ»´ò°üÔÚÏÂÔØÀ´µÄKwiki_*.tar.gzÖÐ¡£ËùÒÔ±ØÐëÏÈ°²×°ÕâÁ½¸öÄ£¿é¡£IO::All,Spoon¡£ÓëÆäËûÄ£¿é°²×°Í¬£¬¿ÉÒÔÍ¨¹ýcpan°²×°¡£
Ä£¿é°²×°Íê±Ïºó£¬½øÈëÄ¿Â¼£º 
% perl Makefile.PL
% make test
% make install
×¢£ºWin32ÏÂÎªnmake£¬Ã»ÓÐ´Ë³ÌÐòµÄÅóÓÑ¿ÉÒÔ²Î¿¼Win32¡£
ÉÏÊöÈýÐÐ½«KwikiµÄÒ»ÏµÁÐÄ£¿é¼ÓÈëperlÄ¿Â¼µÄsite/libÀï¡£
ÎÒ½âÑ¹ËõºóµÄÄ¿Â¼Î»ÖÃÖÃÓÚcgi-binÄ¿Â¼ÏÂ£¬ËùÓÐ½ÓÏÂÀ´Ö´ÐÐREADMEËùËµµÄ£º 
% perl kwiki -new Kwiki
½«Æä°²×°µ½KwikiÄ¿Â¼ÖÐ¡£µ½´Ë£¬¼òµ¥µÄKwiki°²×°Íê±Ï¡£¿ÉÒÔÍ¨¹ýhttp://localhost|url/cgi-bin/Kwiki/index.cgi·ÃÎÊ¡£
²»¹ýÕâÑùµÄKwiki¹¦ÄÜ±¡Èõ£¬»¹ÐèÒª°²×°Ò»Ð©plugins.visit http://www.kwiki.org/?KwikiPluginList.ÎÒËùÑ¡ÔñµÄpluginÎªKwiki::UserPreferences, Kwiki::GuestBook, Kwiki::NewPage.ÆäËûpluginµÄ°²×°·½Ê½ÏàÍ¬¡£°²×°plugin·Ç³£¼òµ¥£¬Ö»ÐèÒª°²×°Æä¶ÔÓ¦µÄÄ£¿é¾Í³ÉÁË¡£°²×°·½·¨Óë°²×°IO::All,SpoonÒ»Ñù¡£
°²×°Íê±Ïºó£¬½«½âÑ¹Ëõ°üÀïµÄkwikiÎÄ¼þÒÆµ½cgi-bin/KwikiÄ¿Â¼ÏÂ£¬È»ºóÖ´ÐÐ£º 
% perl kwiki -add Kwiki::UserPreferences Kwiki::GuestBook Kwiki::NewPage
µ½´ËKwiki°²×°½áÊø¡£ 
Added @ 2004/8/22
¸üÐÂpluginsµÄÁíÒ»ÖÖ·½·¨£¬ÔÚhttp://www.kwiki.orgÉÏÒ²ÓÐ½éÉÜ¡£

°²×°pluginÄ£¿é 
ÔÚpluginsÎÄ¼þÀïÔö¼ÓÄ£¿éÃû³Æ 
Ö´ÐÐ perl kwiki -update 
follows is my plugins: 
Kwiki::Display
Kwiki::Edit
Kwiki::Htaccess
Kwiki::Theme::Basic
Kwiki::Toolbar
Kwiki::Status
Kwiki::Widgets
Kwiki::UserName
Kwiki::GuestBook
Kwiki::UserPreferences
Kwiki::NewPage
Kwiki::Search
Kwiki::Archive::Rcs
Kwiki::RecentChanges
Kwiki::Revisions
Added @ 2004/11/9ÖØ×°ÁË´ÎÏµÍ³¡£·¢ÏÖÖ»ÓÃ 
cpan Kwiki
¾Í¿ÉÒÔÁË¡£Ëü»á×Ô¶¯²éÕÒ¹ØÁªÄ£¿é¡£²¢ÔÚPerl/binÄ¿Â¼ÏÂÉú³Ékwiki.batÓëkwikiÎÄ¼þ¡£
°²×°Íê³Éºó£¬cmd½øÈëconsole. ±ÈÈçÎÒ°²×°ÔÚE:\Fayland\cgi-bin\KwikiÄ¿Â¼ÏÂ¡£ 
E:\Fayland&gt;kwiki -new cgi-bin\Kwiki
]]></description>
		</item>
		<item>
			<title>PHP ¶Ô±È PERL</title>
			<link>http://www.kingmx.com/article.php?id=12909</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[
±¾ÎÄÊÇ http://tnx.nl/php - Èç¹ûÄãÒª¸´ÖÆËû£¬Çë±£³ÖÕâ¸öÁ´½Ó¡£
·­Òë£ºShiningRay @ Nirvana Studio
Ä¿Â¼
&nbsp;&nbsp;* ²ÎÊýºÍ·µ»ØÖµ¼«ÆäÃ¬¶Ü
&nbsp;&nbsp;* PHP¶Ô´óÐ¡Ð´²»Ãô¸ÐµÄ²Ù×÷Ê¹ÓÃ²»Í¬µÄº¯Êý
&nbsp;&nbsp;* PHPµÄº¯ÊýÃüÃû·½Ê½µÄ²»Ò»ÖÂ
&nbsp;&nbsp;* PHPÃ»ÓÐ´Ê·¨·¶Î§
&nbsp;&nbsp;* PHPµÄÖ÷Ãû¿Õ¼äÖÐº¯ÊýÌ«¶à
&nbsp;&nbsp;* PHPÈ±ÉÙ³éÏóÁî TIMTOWTDI ×ßÏòÔã¸âµÄ¼«¶Ë
&nbsp;&nbsp;* ¸ü¶àÐÅÏ¢
²ÎÊýºÍ·µ»ØÖµ¼«ÆäÃ¬¶Ü
ÒªÕ¹Ê¾Õâ¸öÎÊÌâ£¬ÏÂÃæÓÐÒ»¸öº¯ÊýÁÐ±í£¬ÀïÃæµÄº¯ÊýÓÃÀ´Æ¥ÅäÓÃ»§¶¨ÒåµÄÄÚÈÝ£º£¨Ò²ÐíÉõÖÁÄÇÐ©ÓÃPHPµÄÈË²Å»áÊ¹ÓÃÕâ¸öÎÄµµ£¬Ö»ÊÇÓÃÀ´²é¿´¸ÃÓÃÄÄ¸öº¯Êý:P£©
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Æ¥Åä&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ìæ»»Ê¹ÓÃ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ´óÐ¡Ð´²»Ãô¸Ð&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·µ»ØµÄÊý×Ö&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Êý×é²ÎÊý&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·µ»ØÆ¥Åä&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s/m/x±êÖ¾&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Æ«ÒÆ£¨-1=½áÎ²£©
ereg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ereg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ËùÓÐ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Êý×é&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0
ereg_replace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ereg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ×Ö·û´®&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ËùÓÐ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0
eregi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ereg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ËùÓÐ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Êý×é&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0
eregi_replace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ereg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ×Ö·û´®&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ËùÓÐ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0
mb_ereg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ereg[1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ËùÓÐ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Êý×é&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0
mb_ereg_replace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ereg[1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ×Ö·û´®/±í´ïÊ½&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ËùÓÐ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÓÐ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0
mb_eregi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ereg[1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ËùÓÐ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Êý×é&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0
mb_eregi_replace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ereg[1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ×Ö·û´®&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ËùÓÐ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0
preg_match&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; preg[2]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ½Ô¿É&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ò»¸ö&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Êý×é&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÓÐ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0
preg_match_all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; preg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ½Ô¿É&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ËùÓÐ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Êý×é&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÓÐ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0
preg_replace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; preg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ×Ö·û´®/±í´ïÊ½&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ½Ô¿É&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ/ËùÓÐ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÊÇ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÓÐ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0
str_replace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ×Ö·û´®&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ËùÓÐ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÊÇ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Êý×Ö&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0
str_ireplace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ×Ö·û´®&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÊÇ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ËùÓÐ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÊÇ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Êý×Ö&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0
strstr, strchr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ò»¸ö&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ×Ó´®&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0
stristr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÊÇ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ò»¸ö&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ×Ó´®&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0
strrchr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ò»¸ö&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ×Ó´®&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -1
strpos&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ò»¸ö&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ë÷Òý&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n
stripos&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÊÇ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ò»¸ö&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ë÷Òý&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n
strrpos&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char[3]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ò»¸ö&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ë÷Òý&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n
strripos&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÊÇ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ò»¸ö&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ë÷Òý&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -1
mb_strpos&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str[1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ò»¸ö&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ë÷Òý&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n
mb_strrpos&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str[1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ò»¸ö&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·ñ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ë÷Òý&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -1
ÕâÖÖÎÊÌâ»¹´æÔÚÔÚÆäËûµÄº¯Êý×éÀï£¬²»½ö½öÊÇÆ¥ÅäµÄÕâ²¿·Ö¶øÒÑ¡£
£¨ÔÚPerlÖÐ£¬ËùÓÐÕâÐ©¹¦ÄÜ¶¼¿ÉÒÔÍ¨¹ýËÄ¸ö¼òµ¥µÄ²Ù×÷·ûÀ´Íê³É¡££©
[1] ÓÃÓÚ´¦Àí¶à×Ö½Ú×Ö·û
[2] PCRE regex: ËùÎ½µÄ¡°Perl¼æÈÝ¡±µÄÕýÔò±í´ïÊ½¡£
[3] ÔÚPHP5ÖÐÒ²ÊÇ×Ö·û´®str
PHP¶Ô´óÐ¡Ð´²»Ãô¸ÐµÄ²Ù×÷Ê¹ÓÃ²»Í¬µÄº¯Êý
(Õâ¸ö¿ÉÄÜ»áÓÐÁ½·½ÃæµÄÕùÂÛ¡£ÓÐÐ©ÈËÈÏÎªÌá¹©²»Í¬µÄº¯Êý¸üºÃ£¬¼´Ê¹ÕâÒâÎ¶×ÅÓÖÒª¼ÇºÜ¶àÃû´ÊÁË)
ÔÚPerlÖÐ£¬Äã¿ÉÒÔÊ¹ÓÃÁ½¸ölc() »òÕßÊÇ /i ±êÖ¾£¬¶øPHPÍ¨³£»áÌá¹©Ò»¸ö´óÐ¡Ð´Ãô¸ÐµÄ±äÁ¿¡£¶øÇÒ£¬´óÐ¡Ð´²»Ãô¸ÐµÄÄÇÐ©°æ±¾µÄº¯ÊýÃûµÄÃüÃû·½Ê½Ò²²»Ò»ÖÂ¡£
Perl:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $foo cmp $bar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lc $foo cmp lc $bar
PHP:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strcmp($foo, $bar)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strcasecmp($foo, $bar)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
Perl:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; index($foo, $bar)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; index(lc $foo, lc $bar)
PHP:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strpos($foo, $bar)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stripos($foo, $bar)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
Perl:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $foo =~ s/foo/bar/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $foo =~ s/foo/bar/i
PHP:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $foo = str_replace('foo', 'bar', $foo)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $foo = str_ireplace(...)
PHP:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $foo = ereg_replace('foo', 'bar' ,$foo)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $foo = eregi_replace(...)
PHPµÄº¯ÊýÃüÃû·½Ê½µÄ²»Ò»ÖÂ
&nbsp;&nbsp;* ´óÐ¡Ð´²»Ãô¸ÐµÄº¯ÊýÓÐÒ»¸ö'i'»òÕß'case'ÔÚº¯ÊýÃûµÄ²»Í¬µÄÎ»ÖÃ¡£
&nbsp;&nbsp;* ºÁÎÞ±íÏÖÉÏµÄ¹æÂÉ ÓÐÏÂ»®ÏßµÄ ºÍ Ã»ÏÂ»®ÏßµÄ£º
ÏÂ»®Ïß&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞÏÂ»®Ïß£º
stream_get_line&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readline
disk_free_space&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;diskfreespace
is_object&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isset
mcal_day_of_week&nbsp;&nbsp;&nbsp;&nbsp; jddayofweek
set_error_handler&nbsp;&nbsp;&nbsp;&nbsp;setlocale
snmp_get_quick_print&nbsp;&nbsp; snmpget
get_browser&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getallheaders
base64_encode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;urlencode
image_type_to_mime_type&nbsp;imagetypes
msql_num_fields&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysql_numfields
php_uname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;phpversion
strip_tags&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stripslashes
bind_textdomain_codeset&nbsp;bindtextdomain
cal_to_jd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gregoriantojd
str_rot13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strpos
&nbsp;&nbsp;&nbsp;PerlµÄºËÐÄº¯ÊýÃûÔòÃ»ÓÐº¬ÓÐÏÂ»®ÏßµÄ¡£
&nbsp;&nbsp;* PHP ÓÐ unlink ¡¢link ºÍ rename ºÍÏµÍ³µ÷ÓÃÒ»ÖÂ£¬µ«ÊÇ touch µÄÏµÍ³µ÷ÓÃÊÇ utime, ²»ÊÇ touch¡£
&nbsp;&nbsp;* Í¬Ê±ÄãÒ²ÎÞ·¨È·¶¨µ¥´ÊµÄË³Ðò£º
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o ±öÓï ¶¯´Ê£ºbase64_decode, iptcparse, str_shuffle, var_dump
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o ¶¯´Ê ±öÓï£ºcreate_function, recode_string
&nbsp;&nbsp;&nbsp;PerlµÄºËÐÄº¯Êý¶¼ÊÇ¡°¶¯´Ê ±öÓï¡±½á¹¹µÄ³ýÁËÌæ´úµÄ dbm* º¯Êý¡££¨×¢ÒâÀïÃæµÄ sys ÊÇÒ»¸öÇ°×º£¬¶ø²»ÊÇÒ»¸ö±öÓï¡£Í¬Ê± flock ºÍ lstat ÊÇ¸ù¾ÝÏµÍ³µ÷ÓÃÃüÃûµÄ¡£shm* ºÍ msg* ÊÇ¿âº¯Êýµ÷ÓÃ£©
&nbsp;&nbsp;* &quot;to&quot; »¹ÊÇ &quot;2&quot;?
&nbsp;&nbsp;&nbsp;ascii2ebcdic, bin2hex, deg2rad, ip2long, cal_to_jd (jdto*, *tojd), strtolower, strtotime, 
PHPÃ»ÓÐ´Ê·¨·¶Î§
Perl ÓÐ´Ê·¨·¶Î§ºÍ¶¯Ì¬·¶Î§¡£PHPÔòÃ»ÓÐ¡£
¶ÔÓÚÎªÊ²Ã´´Ê·¨·¶Î§ºÜÖØÒªµÄ½âÊÍ£¬¿ÉÒÔ²Î¿¼ Coping with Scoping.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PHP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Perl
³¬È«¾Ö£¨Superglobal£©&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÓÐ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÓÐ[1]
È«¾Ö£¨global£©&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÓÐ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÓÐ
º¯Êý¾Ö²¿&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÓÐ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÓÐ
´Ê·¨Óò£¨¿é¾Ö²¿£©&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÓÐ
¶¯Ì¬Óò&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÎÞ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ÓÐ
[1] PerlÓÐÒ»Ð©±äÁ¿×ÜÊÇÔÚmain:: ÃüÃû¿Õ¼äÖÐ¡£ÕâÐ©ÀàËÆÓÚPHPµÄ³¬È«¾Ö±äÁ¿¡£
[2] ÔÚ×Ó¹ý³ÌµÄ¿éÖÐÊ¹ÓÃÒ»¸ö´Ê·¨±äÁ¿£¬¾Í¿ÉÒÔ×÷ÎªÒ»¸öº¯ÊýµÄ¾Ö²¿±äÁ¿¡£
PHPµÄÖ÷Ãû¿Õ¼äÖÐº¯ÊýÌ«¶à
£¨Ê¹ÓÃ±àÒëÁËËùÓÐºËÐÄ·Ö·¢°üÖÐµÄ¿ÉÓÃÀ©Õ¹µÄºËÐÄ¿â£¬ÎÒÃÇÊ¹ÓÃÁË2003Äê11ÔÂ·¢²¼µÄ°æ±¾£©
PHP Ö÷Òªº¯ÊýµÄÊýÁ¿£º3079 [1]
PerlÖ÷Òªº¯ÊýµÄÊýÁ¿£º206 [2]
ÖÐÖµPHP º¯ÊýÃû³¤¶È£º13
Æ½¾ùPHP º¯ÊýÃû³¤¶È£º13.67
ÖÐÖµPerlº¯ÊýÃû³¤¶È£º6
Æ½¾ùPerlº¯ÊýÃû³¤¶È£º6.22
×¢Òâ£¬PerlµÄÒ»Ð©º¯ÊýÓÐ¼ò¶ÌµÄµÈ¼ÛÓï·¨£º
readpipe('ls -l') ==&gt; `ls -l`
glob('*.txt')&nbsp;&nbsp; ==&gt; &lt;*.txt&gt;
readline($fh)&nbsp;&nbsp; ==&gt; &lt;$fh&gt;
quotemeta($foo)&nbsp; ==&gt; &quot;\Q$foo&quot;
lcfirst($foo)&nbsp;&nbsp; ==&gt; &quot;\l$foo&quot;&nbsp;(lc is \L)
ucfirst($foo)&nbsp;&nbsp; ==&gt; &quot;\u$foo&quot;&nbsp;(uc is \U)
[1] À´Ô´£ºPHP Quick Reference
[2] À´Ô´£ºperldoc perlfunc
PHPÈ±ÉÙ³éÏóÁî TIMTOWTDI* ×ßÏòÔã¸âµÄ¼«¶Ë
*£¨There Is More Than One Way To Do It£¬ÓÐ²»Ö¹Ò»ÖÖ·½Ê½À´Íê³ÉËü£©
ÎªÊ²Ã´PHPÓÐ3079¸öº¯Êýµ«ÊÇPerlÈ´Ö»ÓÐ206¸ö£¿ÔÚPHPÖÐ£¬³£³£ÓÐºÃ¼¸¸öÊ®·ÖÏàËÆµÄº¯Êý¡£ÔÚPerlÖÐ£¬ÄãÒªÁË½âºÍ¼Ç×¡µÄÒªÉÙºÜ¶à¡£
ÁíÍâÒ»¸öÖØÒªµÄÒòËØÊÇÄ£¿éµÄÊ¹ÓÃ£¬ÓÈÆäÊÇDBIÄ£¿é€€€€ËüÓÃÀ´Ìá¹©Êý¾Ý¿âÖ§³Ö£¬¶ø²»ÊÇ°ÑºÜ¶àÌØÐÔÈû½øÄÚºË£¬Õ¼ÓÃÁË¿Õ¼äÈ´ºÜÉÙÓÃµ½¡£
(²»³£ÓÃµÄÄ£¿é²»¼ÆËãÔÚÄÚ(ËùÒÔÕâÀïÅÅ³ýÁËPHPµÄPEARºÍPerlµÄIO::File£©). Èç¹ûºËÐÄÃ»ÓÐÌá¹©ÀàËÆµÄ¹¦ÄÜ£¬ÄÇÃ´ÕâÐ©Ä£¿éÒ²»áËãÔÚÀïÃæ¡£ÎªÁË¼ò±ãÆð¼û£¬ÄÚ²¿µÄ¹¤×÷·½Ê½½«»áºöÂÔ¡£)
&nbsp;&nbsp;*
×ªÒå:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o
PHP: (14)
&nbsp;&nbsp;dbx_escape_string, escapeshellarg, escapeshellcmd, pg_escape_bytea,
&nbsp;&nbsp;pg_escape_string, pg_unescape_bytea, addslashes, addcslashes, preg_quote,
&nbsp;&nbsp;quotemeta, mysql_escape_string, mysql_real_escape_string,
&nbsp;&nbsp;mysqli_real_escape_string, sqlite_escape_string
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o
Perl: (2) [1]
&nbsp;&nbsp;quotemeta, $dbh-&gt;quote
&nbsp;&nbsp;*
ÅÅÐò:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o
PHP: (16)
&nbsp;&nbsp;sort, arsort, asort, krsort, ksort, natsort, natcasesort, rsort, usort,
&nbsp;&nbsp;array_multisort, uasort, uksort, dbx_sort, imap_sort, ldap_sort, yaz_sort
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o
Perl: (1)
&nbsp;&nbsp;sort
&nbsp;&nbsp;*
±éÀúÁÐ±í£º
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o
PHP: (10)
array_filter, preg_grep, array_search, array_unique, in_array, array_map,
array_walk, array_count_values, array_change_key_case, array_sum
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o
Perl: (2)
map, grep
&nbsp;&nbsp;*
·Ö¸î£º
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o
PHP: (8)
split, explode, strtok, spliti, chunk_split, mb_split, preg_split,
str_split
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o
Perl: (1)
split
&nbsp;&nbsp;*
Æ¥Åä:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o
×Ö·û´®£º
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+
PHP: (11)
strstr, strchr, stristr, strpos, strrchr, stripos, mb_strpos,
mb_strrpos, strrpos, strripos, substr
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+
Perl: (3)
index, rindex, substr
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o
ÕýÔò±í´ïÊ½£º
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+
PHP: (6)
ereg, eregi, mb_ereg, mb_eregi, preg_match, preg_match_all
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+
Perl: (1)
m//
&nbsp;&nbsp;*
Ìæ»»Æ¥Åä²¿·Ö£º
&nbsp;&nbsp;* PHP: (12)
&nbsp;&nbsp;ereg_replace, eregi_replace, mb_ereg_replace, mb_eregi_replace,
&nbsp;&nbsp;preg_replace, str_ireplace, str_replace, ltrim, rtrim, trim, nl2br
&nbsp;&nbsp;* Perl: (1)
&nbsp;&nbsp;s///
&nbsp;&nbsp;*
Á¬½Óµ½Êý¾Ý¿â£º
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o
PHP: (17 »ò¸ü¶à)
&nbsp;&nbsp;dbx_connect, fbsql_connect, ibase_connect, msql_connect, msql_pconnect,
&nbsp;&nbsp;mssql_connect, mysql_connect, odbc_connect, pg_connect, pg_pconnect,
&nbsp;&nbsp;sesam_connect, ifx_pconnect, ifx_connect, sqlite_open, sqlite_popen,
&nbsp;&nbsp;mysqli_connect, mysqli_pconnect
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o
Perl: (2)
&nbsp;&nbsp;DBI-&gt;connect, DBI-&gt;connect_cached
&nbsp;&nbsp;*
´ò¿ª£¨ÎÄ¼þ¡¢½ø³ÌµÈ£©:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o
PHP: (5)
&nbsp;&nbsp;dio_open, fopen, proc_open, popen, gzopen[2]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o
Perl: (2)
&nbsp;&nbsp;open, sysopen
&nbsp;&nbsp;*
¶ÁÈ¡/½ÓÊÕ:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o
PHP: (12)
&nbsp;&nbsp;dio_read, fread, gzread[2], socket_read, socket_recv, socket_recvfrom,
&nbsp;&nbsp;socket_recvmsg, readline, fgetc, fgets, stream_get_line, file
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o
Perl: (5)
&nbsp;&nbsp;read, readline, sysread, recv, getc
&nbsp;&nbsp;*
´òÓ¡/Êä³ö/Ð´Èë£º
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o
PHP: (14)
print, echo, printf, fprintf, vprintf, dio_write, fwrite, fputs,
gzwrite[2], socket_send, socket_sendmsg, socket_sendto, socket_write,
socket_writev
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o
Perl: (5)
print, printf, syswrite, send, write
&nbsp;&nbsp;*
¹Ø±Õ:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o
PHP: (7)
closelog, dio_close, fclose, gzclose[2], pclose, socket_close,
proc_close
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o
Perl: (1)
close
&nbsp;&nbsp;*
³£ÓÃ/¹¤¾ß:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o
PHP:
array_combine, array_fill, array_flip, array_merge, list, range, count,
create_function, strtr, pow, putenv, getenv, getmygid, getmypid, getmyuid
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o
Perl:
Ê¹ÓÃÓï·¨»òÕßÄ§Êõ±äÁ¿
[1] ÒòÎªÏµÍ³µÄLISTÓï·¨ºÍDBIµÄÕ¼Î»·û£¬ÏÔÊ½×ªÒå³£³£ÊÇ²»ÐèÒªµÄ¡£
[2] ÔÚPerlÖÐÊÇÓÉPerlIO²ãÀ´´¦ÀíµÄ¡£
¸ü¶àÐÅÏ¢
&nbsp;&nbsp;* Re^2: Is Perl a good career move? by Juerd, 2005
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o ÒÀÈ»Ã»ÓÐÃüÃû¿Õ¼ä
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Ã»ÓÐ±Õ°ü£¬ÉõÖÁÃ»ÓÐÄäÃûº¯Êý
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Ã»ÓÐÁ¼ºÃµÄHTML·ÖÎöÆ÷
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Ã»ÓÐ¼òµ¥µÄMIME¹¹½¨¹¤¾ß
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Ã»ÓÐÁ¼ºÃµÄWWW¿â
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Ã»ÓÐ CPAN
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Ã»ÓÐÊý×é
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Ã»Ê²Ã´ÓÃµÄÂß¼­²Ù×÷·û
&nbsp;&nbsp;* Yaywoo! by Dave Brown, 2004
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Ê¹ÓÃsystem()ÎÞ·¨±ÜÃâ£¨²»°²È«µÄ£©shell
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o XY-problem
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o ´óÁ¿µÄ²»Í¬³ÌÐò£¬µ«ÊÇ£¬ºÜ¶àÖ»ÊÇ×öÁË²î²»¶àµÄÊÂÇéµÄ±äÌå
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o µÚ¶þ²ÎÊýºÍ·µ»ØÖµºÁÎÞÒâÒå
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o º¯ÊýÃûµÄ²î¾¢Æ´Ð´·½Ê½
&nbsp;&nbsp;* Why PHP sucks by Edwin Martin, 2004 £¬ÖÐÎÄ·­Òë ÎªÊ²Ã´PHPÁîÈË²»Ë¬£¨¶ÔÓÚ´óÐÍÏµÍ³£© By ShiningRay
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o ²»Á¼µÄµÝ¹éÖ§³Ö
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o PHP ²»ÊÇÏß³Ì°²È«µÄ
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o PHP ÓÉÓÚÉÌÒµÔ­Òò¶ø²»½¡È«
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Ã»ÓÐÃüÃû¿Õ¼ä
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o ·Ç±ê×¼µÄÈÕÆÚ¸ñÊ½»¯×Ö·û
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o »ìÂÒµÄÐí¿ÉÖ¤
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o ²»Ò»ÖÂµÄº¯ÊýÃüÃû¹æÔò
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Ä§·¨ÒýÓÃµØÓü
&nbsp;&nbsp;* Perl vs. PHP - octo's subjektiver Vergleich by Florian Forster, 2003 (German)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Perl ±È PHP ¿ìºÜ¶à
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Perl ±È PHP ¸ü·á¸»
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Perl ±È PHP ÓÐ¸üºÃµÄÎÄµµ
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o PHP È±·¦Ä£¿é»¯Ö§³Ö
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o PHPµÄhere-docs¶ÔWindowsÓÃ»§ºÁÎÞÓÃÍ¾
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o PHP È±ÉÙÒ»ÖÂµÄÊý¾Ý¿âAPI
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o PHP »º´æÊý¾Ý¿â²éÑ¯½á¹ûºÜÎ£ÏÕ
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Í¼ÐÎÉÏ£¬PHPÊµ¼ÊÉÏ±»ÏÞÖÆÔÚÁË GD ÖÐ
&nbsp;&nbsp;* I hate PHP by Keith Devens, 2003
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o °×³ÕËÆµÄ€€€€µ÷ÓÃÊ±²»ÍÆ¼öÒýÓÃ´«µÝ
&nbsp;&nbsp;* Experiences of Using PHP in Large Websites by Aaron Crane, 2002
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o PHP ÊÇÍÆ¼ö°Ñ±íÏÖºÍÒµÎñÂß¼­½áºÏÆðÀ´µÄ
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Ã»ÓÐÃüÃû¿Õ¼äÔì³ÉºÜ¶àÎÊÌâ
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o php.ini µÄÈ«¾ÖÅäÖÃ
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o ¹ý·Ö¼òµ¥»¯µ¼ÖÂÁË¶îÍâµÄ¸´ÔÓ¶È
&nbsp;&nbsp;* PHP Annoyances by Neil de Carteret, 2002
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Ã»ÓÐÕæÕýµÄÒýÓÃ»òÕßÖ¸Õë
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o ºÁÎÞÃüÃû¿Õ¼äµÄ¸ÅÄî
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o ºÁ²»×é¼þ»¯
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Ïë±ä³ÉPerl£¬µ«ÊÂÊµÉÏÒ²Ã»Ïë±ä³ÉPerl
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Ã»ÓÐ±ê×¼µÄDB½Ó¿Ú
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o ËùÓÐµÄPHPÉçÇø¶¼ÊÇÕë¶Ô·Ç³ÌÐòÔ±µÄ
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o ²»Ö§³ÖÁ´Ê½·½·¨µ÷ÓÃ (ÏÖÔÚÒÑ¾­²»ÊÇÁË --tnx.nl)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Ã»ÓÐÈ«¾Ö±äÁ¿³ý·ÇÍ¨¹ýµ¼Èë
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o register_globals ºÍ $_REQUEST ¶¼ÈÃÈËÍ´ÐÄ
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Êý×é¶¼ÊÇ¹þÎ÷±í
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o PEAR ²¢²»ÊÇ CPAN
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Arrays ²»ÄÜÄÚ²åÖµÌæ»»³É×Ö·û´®£¨Èç$a=array();$b=&quot;$a&quot;;ÊÇ´íÎóµÄ£©
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Ã»ÓÐÀàËÆ &quot;use strict&quot; ÓÃÀ´¼ìÑé±äÁ¿ÃûµÄ¹¦ÄÜ
&nbsp;&nbsp;* PHP: A love and hate relationship by Ivan Ristic, 2002
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o ÉçÇøÁîÎÒ²»°²
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o ÖªÊ¶Ô¨²©µÄÈËÉÙÖ®ÓÖÉÙ
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Zend ·¢²¼µÄÎÄÕÂ»¹½¨Òé²»°²È«µÄÊµ¼ù·½Ê½
&nbsp;&nbsp;* My list of PHP shortcomings by Nathan Torkington, 2001
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Ã»ÓÐÃüÃû¿Õ¼ä
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o ËùÓÐµÄº¯Êý¶¼ÊÇÈ«¾ÖµÄ
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Ã»ÓÐÕæÕýµÄÒýÓÃ
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Ã»ÓÐÕæÊµµÄÊý¾Ý½á¹¹ (ÏÖÔÚÒÑ¾­²»ÊÇÁË --tnx.nl)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o Ã»ÓÐÄäÃûº¯Êý
ÒýÓÃ
EFnet #php: 19:45 &lt;+Dragnslcr&gt; Comparing PHP to Perl is like comparing pears to newspapers
Perl Monks: PHP - it's &quot;training wheels without the bike&quot; -- Randal L. Schwartz
]]></description>
		</item>
		<item>
			<title>modperl Apache2::HelloWorld</title>
			<link>http://www.kingmx.com/article.php?id=12910</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[
Ò»¸ö×î±ê×¼µÄ modperl ½Å±¾¿ÉÄÜÊÇÕâÑùµÄ£º
package Apache2::F_H1;
use Apache2::RequestRec;
use Apache2::RequestIO;
use Apache2::Const -compile =&gt; qw(OK);
sub handler {
 &nbsp; &nbsp;my $r = shift;
 &nbsp; &nbsp;
 &nbsp; &nbsp;$r-&gt;content_type('text/html');
 &nbsp; &nbsp;$r-&gt;print('Hello World!');
 &nbsp; &nbsp;
 &nbsp; &nbsp;return Apache2::Const::OK;
}
1;
È»ºóÔÚ perl.conf »ò httpd.conf ÀïÐ´£º
&lt;Perl&gt;
 &nbsp; &nbsp;use lib 'E:/modperl';
&lt;/Perl&gt;
PerlModule Apache2::F_H1
&lt;Location /h1&gt;
  SetHandler perl-script
  PerlResponseHandler Apache2::F_H1
&lt;/Location&gt;
¼òµ¥µÄ½âÊÍÏÂ´úÂë£º
Apache2::RequestRec ÓÃÓÚ´¦ÀíÇëÇó£¬ÕâÀïÓÃµ½ÁËËüµÄ content_type
Apache2::RequestIO ÔòÓÃÓÚÊäÈëÊä³ö£¬ÕâÀïÓÃµ½ÁËËüµÄ print
use Apache2::Const -compile =&gt; qw(OK); Ôò¶¨ÒåÒ»Ð©³£Á¿£¬ÕâÀïÊÇÓÃµ½ÁË Apache2::Const::OK
my $r = shift; Õâ¸öºÍ Catalyst ÖÐ³ÌÐòµÚÒ»¾ä my ( $self, $c ) = @_; µÄ $c ºÜÀàËÆ¡£¼¸ºõËùÓÐµÄ modperl Ìá½»¸ø PerlResponseHandler »òÆäËû Perl*Handler Ê±£¬×Ó³ÌÐòµÚÒ»¾ä¾Í±Ø¶¨Ó¦µ±ÊÇÕâ¾ä¡£
×¢Òâ 1; Ã»ÓÐÕâ¸öµÄ»°£¬Apache ºÜ¿ÉÄÜÆô¶¯²»ÆðÀ´¡£
¶ø sub handler ¸ú Catalyst ÖÐ View::TT Ä¬ÈÏµÄ process Ò»Ñù¡£Èç¹ûÃ»ÓÐÖ¸¶¨ÆäËüµÄ»°£¬Ä¬ÈÏ¾ÍÊÇ handler.
µ±È»ÎÒÃÇÒ²¿ÉÒÔ¸Ä±äÕâ¸öÃû×Ö£¬ÈçÏÂÃæÕâÑù£º
package Apache2::F_H2;
sub kissme {
 &nbsp; &nbsp;my $r = shift;
 &nbsp; &nbsp;
 &nbsp; &nbsp;$r-&gt;content_type('text/html');
 &nbsp; &nbsp;$r-&gt;print('Hello World!');
 &nbsp; &nbsp;
 &nbsp; &nbsp;return Apache2::Const::OK;
}
1;
ÕâÑùÎÒÃÇ¿ÉÒÔÔÚ perl.conf ÀïÕâÃ´Ð´£º
PerlModule Apache2::F_H2
&lt;Location /h2&gt;
  SetHandler modperl
  PerlResponseHandler Apache2::F_H2::kissme
&lt;/Location&gt;
Handler Ê±Ö¸¶¨ÁË kissme. 
¶øÕâÀïÃ»ÓÐÄÇÈý¸ö use Apache2::*; Ò²ÄÜÕý³£ÔËÐÐÊÇÒòÎª perl.conf Àï PerlRequire &quot;C:/Apache2/conf/startup.pl&quot;, ÇÒ startup.pl ÔØÈëÁËÕâÒ»ÏµÁÐÄ£¿é£¨°üÀ¨ÕâÈý£©¡£
¶ø SetHandler ÎªÊ²Ã´¼´¿ÉÒÔÓÃ perl-script ÓÖ¿ÉÒÔÓÃ modperl Ôò²Î¿¼ mod_perl ÅäÖÃµÄÒ»Ð©Ö¸Áî. 
Õâ¾ÍÊÇÎÒÃÇ×î¼òµ¥µÄ Hello, World! ÖÁ´Ë£¬ÎÒÃÇ¿ÉÒÔ·ÃÎÊ http://localhost/h2 »ò h1 À´ÏíÊÜÎÒÃÇµÄ³É¹û¡£
]]></description>
		</item>
		<item>
			<title>Template Toolkit µÄÅäÖÃÑ¡Ïî</title>
			<link>http://www.kingmx.com/article.php?id=12911</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[
½ñÌìÓÃ Catalyst Ð´Ò»¸ö RSS ¾ÛºÏÆ÷³ÌÐòµÄÊ±ºò£¬·¢ÏÖ TT µÄÅäÖÃ×ÜÊÇ³ö´í¡£ºóÀ´²Å·¢ÏÖÔ­À´ÊÇÅäÖÃÑ¡Ïî³öÁËµãÎÊÌâ¡£ 
Ô­À´µÄ´úÂë²î²»¶àÊÇÕâÑù×ÓµÄ£º
package Feeder::V::TT;
use strict;
use base 'Catalyst::View::TT';
use Template::Constants qw( :debug );
__PACKAGE__-&gt;config({
 &nbsp; &nbsp;# any TT configurations items go here
 &nbsp; &nbsp;INCLUDE_PATH =&gt; Feeder-&gt;config-&gt;{'home'} . '/templates/',
 &nbsp; &nbsp;POST_CHOMP   =&gt; 1,
 &nbsp; &nbsp;PRE_CHOMP    =&gt; 1,
 &nbsp; &nbsp;EVAL_PERL    =&gt; 1,
 &nbsp; &nbsp;PRE_PROCESS  =&gt; 'header.tt',
 &nbsp; &nbsp;POST_PROCESS =&gt; 'footer.tt',
 &nbsp; &nbsp;DEBUG        =&gt; DEBUG_PARSER | DEBUG_PROVIDER,
 &nbsp; &nbsp;CONTEXT      =&gt; undef,
 &nbsp; &nbsp;# two optional config items
 &nbsp; &nbsp;CATALYST_VAR =&gt; 'Catalyst',
 &nbsp; &nbsp;TIMER        =&gt; 1,
});
¿ÉÔõÃ´ÔËÐÐ¶¼²»ÐÐ¡£ÊÔÁËºÃÒ»»á¶ù£¬ºóÀ´²Å·¢ÏÖÔ­À´ Template µÄ INCLUDE_PATH Ä¬ÈÏÊÇÓÃ : À´·Ö¸ô¶à¸öÂ·¾¶µÄ£¬±ÈÈç£º
INCLUDE_PATH =&gt; '/home/abw/templates:/usr/share/templates',
ÕâÑù¾ÍÊÇÁ½¸öÂ·¾¶¡£¶øÎÒÔËÐÐÔÚ Win32 ÏÂ£¬·¢ÏÖ Template ½« E:/Fayland/Feeder/templates »®·ÖÎªÁËÁ½¸öÂ·¾¶ E ºÍ /Fayland/Feeder/templates, ËùÒÔÔËÐÐ³ÌÐò×ÜÊÇÌø³öÕÒ²»µ½Ä£°æÎÄ¼þ¡£ÖªµÀÔ­Òòºó²éÁË²é Perl Template Toolkit Ò»Êé£¬ÔÚÅäÖÃÀï¼ÓÁËÒ»¾ä£º
DELIMITER    =&gt; ';',
ÕâÑù¾Í²»ÊÇÓÃ : ¶øÊÇÓÃ ; À´»®·ÖÁË¡£ 
ÕâÖ»ÊÇÒòÎª×Ô¼º²»ÊìÏ¤ Template µÄÅäÖÃÑ¡Ïî¡£ÓÚÊÇ¾Í¸´Ï°ÁËÒ»±é£¬½«³£ÓÃµÄ¼¸¸ö·­ÒëÈçÏÂ£º 
ABSOLUTEÖ¸³öÓÃ¾ø¶ÔÂ·¾¶µÄÎÄ¼þÊÇ·ñ±»½âÎö¡£Ä¬ÈÏÎª 0.
Èç /foo/bar ÔÚ 1 Ê±Îª¾ø¶ÔÂ·¾¶¶øÔÚ 0 Ê±ÎªÏà¶ÔÂ·¾¶¡£
ÔÚ 0 Ê±Ê¹ÓÃÀàÈç [% INSERT /etc/passwd %] »á³ö´í£¬³ý·ÇÏà¶ÔÂ·¾¶Ò²ÓÐÕâÎÄ¼þ¡£ ANYCASEÖ¸Ê¾ÐÔ¹Ø¼ü×ÖÈç INCLUDE ÊÇ·ñÔÊÐíÐ¡Ð´ BLOCKS´ËÑ¡ÏîÓÃÓÚÔ¤ÏÈ¶¨ÒåÒ»ÏµÁÐÄ£°æ¿é¡£
my $tt = Template-&gt;new({
    BLOCKS =&gt; {
        header  =&gt; 'The Header.  [% title %]',
        footer  =&gt; sub { return $some_output_text },
        another =&gt; Template::Document-&gt;new({ ... }),
    },
});
Hash µÄÖµ¿ÉÒÔÊÇÄ£°æÄÚÈÝ£¬×Ó³ÌÐò»òÊÇ Template::Document
ÕâÑùÎÒÃÇ¾Í¿ÉÒÔÔÚÆäËûÄ£°æÎÄ¼þÀïµ÷ÓÃËüÃÇ¡£ COMPILE_DIR/COMPILE_EXTTemplate ¿ÉÒÔ½«Ä£°æÎÄ¼þ±àÒë³É Perl ÎÄ¼þ±£´æÒÔ±ã½ÓÏÂÀ´µÄÔÙ´Îµ÷ÓÃ¡£
my $tt1 = Template-&gt;new({
    COMPILE_DIR =&gt; '/tmp/ttc',
    COMPILE_EXT =&gt; '.ttc1',
});
COMPILE_DIR ÊÇµØÖ·£¬COMPILE_EXT Îªºó×ºÃû¡£ DELIMITERÕâ¾ÍÊÇÎÒËùÅöµ½µÄÎÊÌâ½â¾ö·½°¸¡£½âÊÍ¼û×îÇ°Ãæ¡£
# Win32 only
my $tt = Template-&gt;new({
    DELIMITER    =&gt; ';',
    INCLUDE_PATH =&gt; 'C:/TT2/Templates;D:/My Templates',
});
CONSTANTS±àÒëÊ±±àÒëÒ»´ÎÕâÐ©³£Á¿£¬¶ø²»ÊÇÃ¿´ÎÔËÐÐ¶¼±àÒëÒ»´Î¡£ÕâÑùÄÜÉÔÎ¢Ìá¸ßµãËÙ¶È¡£
my $tt = Template-&gt;new({
    CONSTANTS =&gt; {
        title   =&gt; 'A Demo Page',
        author  =&gt; 'Joe Random Hacker',
        version =&gt; 3.14,
    },
};
CONSTANT_NAMESPACEËùÓÐ¶¨ÒåµÄ CONSTANTS Ä¬ÈÏÓÃ [% constants.title %] À´»ñµÃ¡£¶ø CONSTANT_NAMESPACE ÓÃÀ´¸Ä±äÇ°×º¡£Èç£º
CONSTANTS_NAMESPACE =&gt; 'const',
ºó£¬¿ÉÒÔÓÃ [% const.title %] À´·ÃÎÊ¡£ NAMESPACEÓÃÀ´¶¨Òå¶à¸ö CONSTANT_NAMESPACE
my $tt = Template-&gt;new({
    NAMESPACE =&gt; {
        site =&gt; Template:::Namespace::Constants-&gt;new({
            title   =&gt; &quot;Wardley's Widgets&quot;,
            version =&gt; 2.718,
        }),
        author =&gt; Template:::Namespace::Constants-&gt;new({
            name  =&gt; 'Andy Wardley',
            email =&gt; 'abw@andywardley.com',
        }),
    },
};
ÕâÑùÄã¾Í¿ÉÒÔ·Ö±ðÓÃ [% site.title %] ºÍ [% author.name %] ·ÃÎÊ²»Í¬µÄ³£Á¿¡£ CONTEXTÉèÖÃÉÏÏÂÎÄ¡£¾ßÌåÓÃÍ¾ÓÐµã¸´ÔÓ¡£ÂÔ¹ý¡£ DEBUGÉèÖÃÄÄÐ©µØ·½ÐèÒªµ÷Ê½¡£Ëù¶¨ÒåµÄ³£Á¿Î»ÓÚ use Template::Constants qw( :debug );
ÓÐÁ½ÖÖÐ´·¨£º
DEBUG =&gt; DEBUG_PARSER | DEBUG_PROVIDER,
# or
DEBUG =&gt; 'parser, provider',
¾ßÌåÄÄ¸öÉ¶ÒâË¼²éÊÖ²á¡£ DEFAULTµ±ÔÚ INCLUDE_PATH ÀïÕÒ²»µ½Ä£°æÎÄ¼þÊ±£¬Ä¬ÈÏµ÷ÓÃ¸ÃÎÄ¼þ
my $tt = Template-&gt;new({
    DEFAULT =&gt; 'notfound.html',
});
ERROR/ERRORS¶¨ÒåÒ»Ð©³£ÓÃµÄ ´íÎó Ä£°æ£¬È»ºóÔÚ±ØÒªÊ±µ÷ÓÃËüÃÇ¡£
my $tt = Template-&gt;new({
    ERROR =&gt; {
        'user.login'  =&gt; 'user/login.html',
        'user.passwd' =&gt; 'user/badpasswd.html',
        'user'        =&gt; 'user/index.html',
        'default'     =&gt; 'error/default',
    },
});
±ØÒªÊ±Í¨¹ý [% THROW user.login 'no user id: please login' %] À´µ÷ÓÃ¡£
»òÔÚµ±Ç°µÄ Template::Context µ÷ÓÃ£º $context-&gt;throw('user.passwd', 'Incorrect Password');
»òÔÚ Perl ´úÂëÖÐµ÷ÓÃ£º die (Template::Exception-&gt;new('user.denied', 'Invalid User ID')); EVAL_PERLÈ·¶¨ÀàÈç PERL »ò RAWPERL ÕâÑùµÄ¿éÊÇ·ñ±»Ö´ÐÐ¡£Ä¬ÈÏÎª 0 FILTERS×Ô¶¨Òå×Ô¼ºµÄ filter, ¹ýÂËÆ÷¡£ÓÃÓÚ´¦ÀíÎÄ¼þµÄÄ³Ò»Ð©×ª»»¡£ Template Ä¬ÈÏ×Ô´øÁËÒ»Ð©¡£
$tt = Template-&gt;new({
    FILTERS =&gt; {
        'sfilt1' =&gt;   \&amp;static_filter,      # static
        'sfilt2' =&gt; [ \&amp;static_filter, 0 ], # same as above
        'dfilt1' =&gt; [ \&amp;dynamic_filter_factory, 1 ],
    },
});
¶øºóµ÷ÓÃ
[% FILTER sfilt1 %]
Blah blah blah.
[% END %]
INCLUDE_PATHÕâ¸öÇ°ÃæÓÃÁË n ¶à´ÎÁË¡£Ëü¾ÍÊÇÓÃÓÚÖ¸¶¨ÄãÒªËÑË÷µÄÄ£°æÎÄ¼þµÄÎÄ¼þ¼Ð¡£Õâ¼¸ºõÊÇÓÃµÃ×î¶àµÄÒ»¸öÖ¸Áî¡£ START_TAG/END_TAGÓÃÒÔÖ¸¶¨ template Ö¸ÁîµÄÆðÊ¼ºÍÖÕÖ¹·ûºÅ¡£Ä¬ÈÏÎª %
my $tt = Template-&gt;new({ 
    START_TAG =&gt; quotemeta('&lt;+'),
    END_TAG   =&gt; quotemeta('+&gt;'),
});
ÕâÑù¾ÍÓÃ &lt;+ INCLUDE foobar +&gt; ¶ø²»ÊÇ [% %] À´µ÷ÓÃÖ¸ÁîÁË¡£ INTERPOLATEÄÚ²å¡£Ä¬ÈÏÎª 0
# INTERPOLATE =&gt; 0
&lt;a href=&quot;http://[% server %]/[% help %]&quot;&gt;
&lt;img src=&quot;[% images %]/help.gif&quot;&gt;&lt;/a&gt;
[% myorg.name %]
# INTERPOLATE =&gt; 1
&lt;a href=&quot;http://$server/$help&quot;&gt;
&lt;img src=&quot;$images/help.gif&quot;&gt;&lt;/a&gt;
$myorg.name
# explicit scoping with {  }
&lt;img src=&quot;$images/${icon.next}.gif&quot;&gt;
OUTPUT/OUTPUT_PATHÕâ¸öÎÒÔÚÀÏ°æ±¾µÄ Eplanet ÀïÊÇ³£ÓÃµÄ¡£¿ÉÒÔ½«ÄÚÈÝÊä³öµ½ÎÄ¼þ¡£ PRE_CHOMP, POST_CHOMPÊÇ·ñÔÚ [% %] Ö¸ÁîÇ°ºóÈ¥³ý¿ÕÐÐ¡£Ä¬ÈÏ²»È¥³ý¡£ÕâÑùµÄ»°£º
&lt;a href='[% address %]'&gt;Click Here&lt;/a&gt;
µÄ»°²úÉúµÄ×îºó½á¹û¿ÉÄÜÊÇ£º
&lt;a href='
fayland.html
'&gt;Click Here&lt;/a&gt;
ÎÒÏ²»¶½«ËüÃÇÉèÖÃ³É 1, ¼´Ê¹ÓÐÊ±ºòÓ¦¸Ã·Ö¿ªµÄÐÐÒ²²¢ÆðÀ´ÁË¡£ PRE_DEFINE, VARIABLESÕâÁ½¸öÑ¡ÏîÊÇÒ»ÑùµÄ¡£ÓÃÓÚÉèÖÃÒ»Ð©Ä¬ÈÏÖµ¡£Èç¹û STASH Ã»ÓÐÉèÖÃµÄ»°²ÉÓÃËüÃÇ£¬Éè¶¨µÄ»°ºöÂÔ¡£
my $tt = Template-&gt;new({
    PRE_DEFINE =&gt; {
        title   =&gt; 'A Demo Page',
        author  =&gt; 'Joe Random Hacker',
        version =&gt; 3.14,
    },
};
PRE_PROCESS, POST_PROCESSµ÷ÓÃÒ»¸ö process Ä£°æÎÄ¼þÊ±Ô¤ÏÈµ÷ÓÃºÍºóÀ´µ÷ÓÃµÄÄ£°æÎÄ¼þ¡£Ò»°ãÓÃÓÚ·ÅÖÃÍ·ÎÄ¼þºÍÎ²ÎÄ¼þ¡£
my $tt = Template-&gt;new({
    PRE_PROCESS  =&gt; [ 'config', 'header' ],
    POST_PROCESS =&gt; 'footer',
};
STASH, processÕâÐ©ÔÚ Catalyst Ã»ÓÃµ½ËùÒÔÒ²²»½éÉÜÁË¡£ Enjoy!Share me what u think. 
]]></description>
		</item>
		<item>
			<title>¸úÎÒÑ§Perl</title>
			<link>http://www.kingmx.com/article.php?id=12912</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[CGI/PERLÑ§Ï°Èç¹ûÄãÔø¾­Ê¹ÓÃ¹ýlinux£¬ÎÞÂÛÊ±¼ä³¤¶Ì£¬¶¼±Ø¶¨ÌýËµ¹ýperl£»ÉõÖÁ¿ÉÄÜÔÚ²»ÖªµÀµÄÇé¿öÏÂÔËÐÐÁË²»ÉÙperlµÄ½Å±¾¡£ºÜ¶à·þÎñ³ÌÐò£¬Ïó¡°inews¡±¡¢¡°mirror¡±¡¢¡°debconf¡±¡¢¡°majordomo¡±¡¢¡°sirc¡±µÈµÈ£¬¶¼ÊÇ´¿´âÓÃperlÐ´µÄ¡£ÔÚDebianÇøÓòµÄ¡°Packages.gz¡±ÎÄ¼þÀï×öÒ»¸ö¼òµ¥µÄµÄ¡°zgrep¡±£¬Äã¾Í¿ÉÒÔÖªµÀÓÐ382¸ö°üÐèÒªperlµÄÖ§³Ö£¨Ò²¾ÍÊÇÒâÎ¶×ÅÕâÐ©°ü¶¼ÖÁÉÙÓÐÒ»²¿·ÖÊÇÓÃperlÐ´µÄ¡££©£¬ÆäËü28¸öÈí¼þ°üÒ²½¨Òé»òÍÆ¼öÊ¹ÓÃperlÖ§³Ö¡£ 
&nbsp;&nbsp;&nbsp; µ«ÊÇPerlÓïÑÔÓÐÊ²Ã´³öÉ«Ö®´¦ÄØ£¿
&nbsp;&nbsp;&nbsp; CGI/PERLÑ§Ï°&quot;PerlÓïÑÔÔÚÎÄ±¾´¦Àí·½Ãæ·Ç³£Í»³ö£¬Ëü°Ñ²»Í¬µÄÄÚÈÝÁª³ÉÒ»¸öÕûÌå¡£¶ÔÓÚÕâÖÖ½Å±¾ÓïÑÔÀ´ËµËùÓÐµÄÄÇÐ©²»Í¬µÄÔªËØ£¬¿´ÆðÀ´¶¼ÊÇÒ»ÑùµÄ¡£¡±€€€€John Ousterhout£¬Tcl½Å±¾ÓïÑÔµÄ×÷Õß 
&nbsp;&nbsp;&nbsp; Perl¼´¡°Practical Extraction and Report Language¡±£¨ÊµÓÃÎöÈ¡±¨±íÓïÑÔ£©¡£ÊÇµÄ£¬±È½Ï´Ö£¬µ«ÊÇÎÒÏëÄÇ¾ÍÊÇÄãËùµÃµ½µÄ€€€€Èç¹ûÄã´òËãÈ·ÐÅ$HUNN NGOUS CORP²¢ÇÒÊ¹ÓÃËüµÄ»°¡£ÊÂÊµÉÏ£¬Larry Uall&lt; Larry@wall org &gt;(PerlµÄ´´Á¢Õß)ÔÚPerlµÄ°ïÖúÊÖ²áÒ³ÀïÌá³ö£º¡°PerlÊµ¼ÊÉÏ´ú±íµÄÊÇPathologically Edectic Rubbish Lister£¬µ«²»Òª¸æËßÈÎºÎÈËÎÒÕâÑùËµ¹ý¡£¡±ßí£¬ËûÊÇLarry£¬¶Ô´ËÎÒÓÖÄÜÔÙËµÐ©Ê²Ã´ÄØ£¿ 
&nbsp;&nbsp;&nbsp; PerlÒÑ¾­±»¹ã·ºµÄÈÏÎªÊÇ¡°Ò»ÖÖÓµÓÐ¸÷ÖÖÓïÑÔ¹¦ÄÜµÄÃÎ»Ã½Å±¾ÓïÑÔ¡±¡¢¡°Unix ÖÐµÄÍõÅÆ¹¤¾ß¡±¡£ÒÔ¼°ÆäËûµÄÒ»Ð©ÀàËÆµÄ³Æºô£¬ÕâÐ©¶¼ÊÇÔÞÓþÖ®´Ç£¬Perl±»ÓÃÀ´Ð´µ¥ÐÐ½Å±¾£¬¿ìËÙÖ´ÐÐ³ÌÐò£¬´óµÄ¹æ»®ÏîÄ¿£¨Amazon.comµÄËùÓÐÆÀÂÛ²úÆ·ºÍ¿ØÖÆÏµÍ³£¬NetscapeµÄÄÚÈÝ²ß»®¹ÜÀíºÍ´«ËÍÏµÍ³£¬ÈËÀàÕû×é»ùÒò¹¤³ÌµÄDNAÅÅÐòÒÔ¼°¼Æ»®¹ÜÀíµÈµÈ£©¡£»¹ÓÐÊýÒÔ°ÙÍò¼ÆµÄÁîÎÒÃÇ¾ªÑÈµÄ¸÷ÖÖ¸÷ÑùµÄÊÂÇéµÄ¸ßËÙ³ÌÐò¡£Perl»¹ÄÜ¹»ÊµÏÖÐí¶àUNIXµÄ¹«¹²ÏµÍ³¹¤¾ßµÄ¹¦ÄÜ£¨ÌáÊ¾£ºÈç¹ûÄãÕýÔÚÑ§»ò±ØÐëÑ§awk, sed, grepºÍ tr£¬ÎÒ½¨ÒéÄãÒÔPerlÀ´´úÌæËüÃÇ¡£ËùÓÐµÄ¹¦ÄÜ£¬¸ü¿ìµÄÖ´ÐÐÐ§ÂÊ£¬ÏàÐÅÄã½«ÓÀÔ¶²»»áÒòÎªËüµÄÐÔÄÜ·¢Õ¹Ì«¿ì¶ø²»ÊÊÓ¦Ëü¡££© 
&nbsp;&nbsp;&nbsp; ¾ÍÏñÄã¶ÔËùÓÐµÄÏÖ´úÓïÑÔËùÆÚÍûµÄÄÇÑù£¬PerlÔÊÐíÄã½¨Á¢ÃæÏò¶ÔÏóµÄ³ÌÐò¡£ËüÒ²¿ÉÒÔ½øÐÐÍøÂç²Ù×÷£¨ÀýÈçsocketµÈµÈ£©£¬²¢ÇÒÓÐÁ¼ºÃµÄ¿ÉÒÆÖ²ÐÔ£¨Ò»¸öÐ´µÃºÃµÄ½Å±¾¿ÉÒÔÔÚLinux£¬BSD£¬Solaries£¬Dos£¬Win9x£¬NT£¬MacOS£¬OS/2£¬ AnugaOS£¬VMSµÈ²Ù×÷ÏµÍ³ÖÐ²»ÐèÒªÈÎºÎÐÞ¸ÄµÄÔËÐÐ£©£¬±àÐ´ºÍµ÷ÊÔÖÜÆÚºÜ¶Ì€€€€ÓÉÓÚÃ»ÓÐ±àÒëµÄÒªÇó£¬ÄãÖ»Ðè½«±ä»¯µÄ²¿·ÖÐ´³ö£¬¾Í¿ÉÒÔÔËÐÐ½Å±¾¡£»¹ÓÐÊýÄ¿ÅÓ´óµÄ¿ÉÊÊÓÃÓÚÖ´ÐÐÈÎºÎÒ»ÏîÈÎÎñµÄÄ£¿é£¨¼´Ô¤½¨Á¢PerlµÄÀý³Ì£©£¬Comprehensive Perl Archiue Network (CPAN)¾ÍÊÇÃ¿Ò»¸öPerl³ÌÐòÔ±ËùÄÜÓµÓÐµÄ×îºÃµÄÄ£¿é¿âÖ®Ò»¡£
&nbsp;&nbsp;&nbsp; CGI/PERLÑ§Ï°Å¶£¬µ«ÄÇÊÇÕæµÄÂð£¿ 
&nbsp;&nbsp;&nbsp; ÎÊµÃºÃ£¬ÎÒÏ£ÍûÔÚÄãÊ¹ÓÃPerl´óÔ¼Ò»ÄêÖ®ºó£¬¾ÍÄÜ¸æËßÎÒ´ð°¸¡£Ò»Ñù¶«Î÷µÄÃèÊö¾ÍÏñÒ»¸öÈÝÆ÷¡­¡­£¬ÎÒÈÔ¾ÉÔÚÊÔÍ¼Ñ°ÕÒÒ»¸öÊÊºÏPerlµÄ×ã¹»´óµÄÈÝÆ÷£¨ÒªÊÇ´øÓÐÄÜËøµÄ¸Ç×Ó¾Í¸üºÃÁË£©¡£ 
&nbsp;&nbsp;&nbsp; ÄÇPerl²»ÊÊÓÃµÄ·½ÃæÄØ£¿
&nbsp;&nbsp;&nbsp; ÎÒ²»»áÓÃPerlÈ¥Ð´Ò»¸öGUIÎÄ×Ö´¦Àí³ÌÐò£¬Ò»¸öÍ¼ÐÎÓÎÏ·£¬»òÕßÒ»¸öÍ¼ÐÎä¯ÀÀÆ÷¡£PerlÄÜÍ¨¹ýÓëÐí¶àÆäËûÓïÑÔµÄ½Ó¿ÚÕæÕýµÄ½»»¥£¬ËùÒÔÄã¿ÉÒÔÊµÏÖ¸Õ²ÅËùËµµÄÈ«²¿³ÌÐò¡£µ«ÔÚÎÒ¿´À´£¬ÔÚÆäËü±à³ÌÓïÑÔÀïÓÐÐí¶à¸üÓÐÐ§µÄ·½·¨È¥×öÄÇÐ©ÊÂÇé¡£¡°¶ÔÒ»¸öÄÃ×Å´¸×ÓµÄÈËÀ´Ëµ£¬ËùÓÐµÄÎÊÌâ¿´ÉÏÈ¥¶¼ÏñÊÇ¶¤×Ó¡±€€€€³ÌÐòÔ±ÃÇÐ¡ÐÄÁË¡£ 
&nbsp;&nbsp;&nbsp; ÖµµÃ×¢ÒâµÄÊÇ£¬Perl±¾Éí²¢²»ÊÇÓÃPerlÐ´³ÉµÄ£¬Ò²²»ÊÇLinalxµÄÄÚºË¡£ÄÇÐ©µ×²ãµÄÊÂÎñÓÃC/C++À´´¦Àí»á¸üºÃµÄ¡£¡°ÓÃ×îÊÊºÏµÄ¹¤¾ßÈ¥×ö×îÊÊºÏµÄ¹¤×÷¡±Ó¦³ÉÎªÃ¿¸ö³ÌÐòÔ±µÄ×ùÓÓÃú¡£ 
&nbsp;&nbsp;&nbsp; ÔÚÀ­¿ªÌøÉ¡Ë÷Ö®Ç°µÄ×îºóÒ»´Î¸æ½ë¡£ 
&nbsp;&nbsp;&nbsp; Èç¹ûÄã¶ÔPerlÓÐÒ»µãÁË½â£¬»òÕß¿´¹ý¡¶Aint The Way I Learned It¡·ÏµÁÐÄÚÈÝµÄ»°£¬Ò»¶¨¼ÇµÃPerlµÄ¿ÚºÅ£º¡°×öÊÂ×ÜÓÐ²»Ö¹Ò»ÖÖ°ì·¨£¨There's More Than One Way To Do It£©¡±¡£Õâ³£±»ËõÐ´ÎªTMTOMDI£¬²¢³ÆÎª¡°tim-today¡±£¬ÊÇPerlµÄºËÐÄ¹ÛµãÖ®Ò»¡£µ±È»£¬ÈÎºÎ¶ÔÃ÷ÏÔµÄ´íÎóµÄ¶©Õý¶¼·Ç³£»¶Ó­¡£ 
&nbsp;&nbsp;&nbsp; ÄÇÐ©¿´¹ýÎÒÔçÐ©Ê±¼äÐ´µÄ¹ØÓÚShell½Å±¾µÄ´ÔÊéµÄÈËÒ²Ðí¼ÇµÃ£¬Ò»¸ö½Å±¾¿ªÊ¼¶¼ÓÐ±»³Æ×÷hash-bang»òshebangµÄÐÐ£º 
#£¡/bin/ bash 
ÕâÐÐ¸æËßÍâ¿Ç£¨shell£©ÅÉÉúÒ»¸ösubshell£¨×Óshell£©£¬ËæºóµÄ´úÂë½«±»Õâ¸öÌØ¶¨µÄsubshell³ÌÐò½âÊÍÖ´ÐÐ¡£Perl½Å±¾Ò²Ò»Ñù£¬µÚÒ»ÐÐ±ØÐëÊÇ£º 
#£¡/usr/bin/Perl 
»òÕßÈÎºÎÒ»¸öÕýÈ·µÄPerl½âÊÍÆ÷µÄÂ·¾¶¡£ 
×¢Òâµ½Hash-bangµÄ±ØÒªÌõ¼þ£º 
1£© Ëü±ØÐëÊÇÔÚ½Å±¾ÖÐµÄµÚÒ»ÐÐ¡£ 
2£© #ºÅ±ØÐëÊÇ±¾ÐÐµÄµÚÒ»¸ö×ÖÄ¸£¬²¢ÇÒÔÚ#ºÅºÍ£¡ºÅÖ®¼ä²»ÄÜÓÐÈÎºÎ×ÖÄ¸»ò·ûºÅ¡£ 
3£© ±ØÐëÊ¹ÓÃ¾ø¶ÔµÄÂ·¾¶£¬¶ø²»ÊÇÖ»ÓÐ¿ÉÖ´ÐÐ³ÌÐòµÄÃû³Æ¡£ 
ÏÂÃæ£¬ÈÃÎÒÃÇÊÔ×ÅÐ´³öÎÒÃÇµÄµÚÒ»¸ö Perl½Å±¾£º 
#£¡/ usr/bin/Perl 
# &quot;goodbye&quot; - a modern, high-angst replacement for &quot;Hello World&quot; 
print &quot;Goodbye, cruel world! 
&quot;; 
unlink $0;&nbsp; àÅ£¬ÖÁÉÙÔÚÀë¿ªÒÔÇ°ËµÁË¡°ÔÙ¼û¡±£»ÀñÃ²·òÈË¶¼»áÎª´Ë½¾°ÁµÄ¡£ÎÒÃÇÔÚÕâ¸ö½Å±¾Àï×öÁËÊ²Ã´ÄØ£¿ÓÐ¼¸¼þÊÂÇéÊÇÏàµ±Ã÷ÏÔµÄ£ºµÚÒ»£¬¡°hash-bang¡±£¬µÚ¶þ£¬Ò»ÐÐ¸æËßÎÒÃÇ½Å±¾Òª×öÊ²Ã´µÄËµÃ÷€€´Óshell½Å±¾·¢Õ¹³öÀ´µÄÁíÒ»¸ö¶«¶«£¬²¢ÇÒÕâÊÇ¸ö²»´íµÄÏë·¨£¨ÔÚ´úÂëÖÐ²¢Ã»ÓÐ¹ý¶àµÄ½âÊÍ£¡£©¡£µÚÈý£¬ÎÒÃÇÓÃ¡°print¡±º¯Êý´òÓ¡³öËùÒªµÄÐÅÏ¢¡£×¢Òâ£¬ÔÚÒ»´®×Ö·ûÄ©Î²µÄ¡° ¡±£ºPerl²»»á×Ô¶¯ÎªÄãÌá¹©Ò»¸ö»»ÐÐ£¬ËùÒÔÄã±ØÐë×Ô¼º¾ö¶¨Òª»¹ÊÇ²»Òª¡£»¹Òª×¢Òâ£¬ÔÚÃ¿Ò»ÐÐ´úÂëÄ©Î²µÄ·ÖºÅ£º¾ÍÏñCÓïÑÔ£¬PerlÒ²ÓÐÍ¬ÑùµÄÒªÇó£¬²»ÐÒµÄÊÇÕâ³£±»±à³ÌÕßËùÍü¼Ç¡£Êµ¼ÊÉÏ£¬ÓÉÓÚÓÐ×ÅÏà¶ÔÒ×¶®µÄÐÅÏ¢£¬PerlµÄ´íÎó¼ì²éÊ®·ÖÈÝÒ×£¬×÷Îª´úÂëÓï¾äµÄ·Ö¸ô±êÖ¾£¬·ÖºÅ³£±»ÈÏÎªÊÇÏÂÒ»ÐÐµÄÇ°µ¼·û¡£Èç¹ûÄã×¢Òâµ½Õâ¸öÎÊÌâ£¬²¢²»Âé·³£¬×îºÃ¼Ç×¡Ê¹ÓÃ·ÖºÅ¡£ 
&nbsp;&nbsp;&nbsp; CGI/PERLÑ§Ï°×îºóÒ»ÐÐµÄÒâË¼ÊÇÉ¾³ý ¡°goodbye cruel world¡±ÎÄ¼þ£¬·ûºÅ¡°$0¡±½ö½öÊÇ±»ÔËÐÐ¶ÂÈûµÄ½Å±¾µÄÃû×ÖµÄÒýÓÃ£¬¡°unlink¡±×öÁËºÍ¡°rm¡±Ò»ÑùµÄÊÂ¡£×¢Òâ£¬¡°$0¡±±È¡°goodbye¡±ÉõÖÁÊÇ¡°/goodbye¡±ÓÐÓÃµÄ¶à£¬²»¹ÜÎÄ¼þÊÇÊ²Ã´Ãû×Ö£¬¡°$0¡±½«·µ»ØÕâ¸öÎÄ¼þÃû¡£
&nbsp;&nbsp; Ð´ÍêÃÀÎÞÈ±µÄ´úÂë¶ÔÎÒÀ´ËµÓÐÒ»Ð©²»ÇÐÊµ¼Ê¡£ÔÚ¹ýÈ¥µÄÒ»Ð©³¡ºÏ£¬ÎÒÐ´ÁËÐ©¡°write-only¡±´úÂë£¬Õâ½«Ê¹ÈÎºÎÊÔ×Å¶ÁËüµÄ±ä³É²»Í¬µÄÑÕÉ«¡£ÎÒ¾­³£³¢ÊÔ×ÅÌá¸ßË®Æ½£¬ÎÒÕæµÄÏ£Íû¿´µ½Õâ¸öÏë·¨µÃÒÔÊµÏÖ¡£ 
&nbsp;&nbsp;&nbsp; ¿Õ°×€€€€tabºÍspace¼ü€€€€ÔÚPerlÖÐÊÜµ½ÁËºöÂÔ£¬Ò²¾ÍÊÇËµ£¬ËüÊÇÎÞËùÎ½ÓÐÎÞËùÎ½ÎÞµÄ¡£ÕýÒòÎªÕâÒ»µã£¬ÄãÄÜ¸ñÊ½»¯ÄãµÄPerl´úÂëÀ´±í´ïÄãÕýÏëÒª±í´ïµÄË¼Ïë£¬¾Ù¸ö±È½Ï¼òµ¥µÄÀý×Ó£» 
@boats=(¡°Aloa¡±,¡°Cheoy Lee¡±,¡°Pearson¡±£¬¡°Mason¡±,Swem,¡°Westsail¡±,¡°S2¡±,¡°Petersen¡±, ¡°Hereshoff¡±)£»#º£´¬µÄÃûµ¥ÁÐ±í¡£ 
Õâ¸öÀý×ÓÖÐ£¬ÎÒÃÇÓÃÒ»Ð©º£´¬µÄÃû×ÖÌîÈëÊý×é¡°@boats ¡±ÖÐ£¬ÏÂÃæµÄÀý×ÓÒ²Ðí¸ü¼ÓÈÝÒ×Àí½â£º 
@array=£¨¡°Aloa¡±£¬#·¨¹úOSTAR/IORµÄ´¬ 
¡°Cheoy Lee¡±£¬#ÊæÊÊµ«ÊÇ°º¹ó 
¡°Pearson¡±£¬#½áÊµµ«ÊÇ±¿ÖØ 
¡°Mason¡±£¬#Éè¼ÆÁ¼ºÃ£¬µ«ÓÐÐ©ÓºÖ× 
¡°Swan¡±£¬#ÉÏµÈ´¬Ö»£¬Èç¹ûÄãÊÇ´ó¿î 
¡°Westsail¡±£¬WestsailÔÚË«Î²´¬ÀïËãÊÇÏàµ±²»´íÁË 
¡°S2¡±£¬#Æ¯ÁÁµÄº£Íå´¬Ö»€€€€µ«²»ÊÊÒËÔ¶Ñó 
¡°Petersen¡±, #¸ÖÌúÑ²Ñó½¢£¬¿í³¨µ«Ô®Âý 
¡°Hereshott¡±£¬#¿ìËÙ¶ø»ªÀö£¬ÏÁÕ­¶ø°º¹ó 
&nbsp;&nbsp;&nbsp; Õâ¸öÏ°¹ß²»½ö½öÔÚPerlÖÐµÃµ½Ó¦ÓÃ¡£¾ø´ó¶àÊýµÄÏÖ´úÓïÑÔÔÊÐí¸½¼Ó¿Õ°×£¬ÕâÑù¿ÉÒÔÊ¹´úÂë¸ü¼ÓÒ×¶®¡£µ±ÎÒÐ´Õâ¸öÏµÁÐÎÄÕÂµÄÊ±ºò£¬ÎÒ½«¾¡×î´óÅ¬Á¦Ê¾·¶ÖÁÉÙÎÒ×Ô¼ºÈÏÎªºÃµÄ´úÂëÑùÊ½µÄ°æ±¾¡£Í¬Ê±Ò²Ï£ÍûÃ¿Ò»¸öÈËÔÚ´´½¨ËûÃÇ×Ô¼ºµÄ´úÂëÊ±ÈÏÕæ¿¼ÂÇÕâ¼þÊÂ¡£
&nbsp;&nbsp;&nbsp; ±äÁ¿CGI/PERLÑ§Ï° 
&nbsp;&nbsp;&nbsp; ÔÚPerlÀï£¬Ò×ÓÃÐÔ·Ç³£ÖØÒªµÄ¡£ËüÊÇÒ»ÖÖ±»³Æ×÷¡°¸ñÊ½¿íËÉ¡±µÄÓïÑÔ£¬ÆäÖÐ±äÁ¿µÄ¶¨Òå²¢Ã»ÓÐÑÏ¸ñÒªÇó¡£Êµ¼ÊÉÏ£¬Ã»ÓÐÊ²Ã´·½·¨¿ÉÒÔ¶¨Òå32Î»µÄ¸¡µãÊý±äÁ¿¡£ 
PerlÖÐÓÐÈýÖÖ±äÁ¿£¬ËüÃÇ·Ö±ðÊÇ±êÁ¿ÐÍ±äÁ¿£¨Scalars£©£¬Êý×éÐÍ±äÁ¿£¨arranys£©ºÍÉ¢ÁÐ±í£¨hashes£©£¬³ýÁËÕâÐ©ÆÄÁîÈËÍ·ÌÛµÄÃû×Ö£¬ËûÃÇÆäÊµ¶¼ºÜ¼òµ¥£º½ö½ö°üº¬Ò»Ð©Êý¾ÝµÄ²»Í¬ÅÅÁÐ¶øÒÑ¡£ 
±êÁ¿ÐÍ±äÁ¿€€€€Êý×Ö£¬×Ö·û´®ºÍÒýÓÃ 
Ò»¸ö±êÁ¿ÐÍ±äÁ¿ÓÉ$±êÖ¾À´±íÊ¾£¬ÀýÈç$nuru,$joe,$pointer¡£ 
Àý£º 
¡°0.0421¡±,¡°Joe¡¯s gloue¡±,ÄÚ´æµØÖ·¡°0Xa000¡± 
Êý×éÐÍ±äÁ¿€€€€ÁªÏµÊý×Ö±êÊ¶µÄ±êÁ¿ÐÍ±äÁ¿µÄÁÐ±í»òÕßËµ¼¯ºÏ 
Ò»¸öÊý×éÐÍ±äÁ¿ÓÉ@±êÖ¾À´±íÊ¾£¬ÀýÈç@v£¬@list£¬@variable 
Àý£º 
0-----¡°Sundary¡± 
1-----¡°Mondeny¡± 
2-----¡°Tuesday¡± 
3-----¡°Wednesday¡± 
É¢ÁÐ±í€€€€±êÁ¿ÐÍÁÐ±íµÄÒýÓÃ¼ü 
Ò»¸öÉ¢ÁÐ±í±äÁ¿ÓÉ%±êÖ¾À´±íÊ¾£¬ÀýÈç%people£¬%x£¬%this_is_a_hash¡£ 
Àý£º 
ridcnt €€€€¡°Sherlock Holmes¡± 
addr€€€€¡°221B Backer Street¡± 
code€€¡°NW1¡± 
city€€¡°Londen¡± 
country€€¡°Steuth¡± 
¡­¡­ 
&nbsp;&nbsp;&nbsp; ×¢Òâ£¬ËäÈ»Êý×éÐÍ±äÁ¿ÊÇ°´Êý×ÖË³Ðò´æ´¢µÄ£¬µ«É¢ÁÐ±íÈ´²»ÊÇ€€€€»Ö¸´É¢ÁÐ±íµÄµÚÒ»¸öÔªËØµÄÍùÍùºÍÄãÔØÈëµÄµÚÒ»¸öÔªËØºÁÎÞ¹ØÁª¡£É¢ÁÐµÄÔªËØÍ¨¹ýÎÄ±¾¼ü´úÌæËüÃÇÔÚ½á¹¹ÖÐµÄÎ»ÖÃÀ´½øÐÐË÷Òý¡£ 
&nbsp;&nbsp;&nbsp; ÀûÓÃÕâÈýÖÖÊý¾ÝÀàÐÍ£¬Äã¿ÉÒÔ±íÊ¾ÄãÏëÒªµÄÈÎºÎÊÂ£¬²¢ÇÒ»áºÜÇáËÉµÄÊµÏÖ¡£ 
&nbsp;&nbsp;&nbsp; ÁíÍâºÜÖØÒªµÄÒ»µã£º$a,@a ºÍ%aÈýÕßÖ®¼äÍêÈ«ºÁÎÞ¹ØÁª£¬ËûÃÇ´¦ÔÚ²»Í¬µÄÃû×Ö¿Õ¼ä¡£ÎÒÔÚÉè¼Æ³ÌÐòÊ±£¬¾¡Á¿Ð¡ÐÄ²»Ê¹ÓÃÕâÐ©ÔÚÊÓ¾õÈÝÒ×²úÉú»ìÏýµÄÃû×Ö¡£ÌØ±ðÊÇÏñ$a[0]£¨Êý×é@aµÄµÚÒ»¸öÔªËØµÄÒýÓÃ£©ÕâÖÖ±äÁ¿ÒÑ¾­´æÔÚµÄÇé¿öÏÂ€€€€ÕâµÄÈ·ÊÇÄãÐèÒª×¢ÒâµÄ¡£ 
&nbsp;&nbsp;&nbsp; ¿ÉÒÔ¸ø±äÁ¿¸³²»Í¬ÀàÐÍµÄÖµ€€€€Êý×ÖÐÍºÍ×Ö·û´®€€€€ÎÒÃÇÏÂÒ»²½½«½øÐÐÓÐ¹ØÁ½ÖÖÀàÐÍµÄ¹²Í¬µÄ²Ù×÷¡£PerlÎªÄãÌá¹©ÕâÐ©£¬µ«Ó¦¸Ã¼Ç×¡ÄÄÐ©ÀàÐÍµÄÓÃÄÄÐ©²Ù×÷·û¡£ 
Operator Num Str 
µÈÓÚ == eql 
²»µÈÓÚ != ne 
Ð¡ÓÚ &lt; Lt 
´óÓÚ &gt; gt 
Ð¡ÓÚµÈÓÚ &lt;= le 
´óÓÚµÈÓÚ &gt;= ge 
&nbsp;&nbsp;&nbsp; µ±Í¨¹ý±È½ÏÕâÐ©×ÖÄ¸»ò×Ö·û´®Ö®ºó»á¾õµÃËûÃÇÒì³£ÈÝÒ×¼ÇÒäºÍÊ¹ÓÃ€€€€±È½Ï×Ö·ûµÄÊ±ºò£¬¾ÍÊ¹ÓÃ×Ö·û¡£
&nbsp;&nbsp; ÒÔÇ°ÎÒ×ÜÊÇ¸ø³ö¾ßÌåµÄÀý×Ó£¬µ«Õâ´Î¸øÄãÃÇ³öÒ»µÀ×ãÒÔÊ¹ÄãÃÇÍ··¢±ä°×£¬ÉíÐÄÆ£±¹µÄÄÑÌâ£º 
#!/usr/bin/perl 
# A Political evaluation script 
$a=¡°A1¡± 
$b=¡°George¡±£» 
if($a&gt;$b)print $a wordinake a better Presideut 
If($a&lt;$b) print $b word make a betler Presiclent 
; 
If($a=$b)Print $a or $b, tlere¡¯s no Diflereue 
; 
&nbsp;&nbsp;&nbsp; Êä³ö½á¹û±íÃ÷ÆäÖÐ²¢Ã»ÓÐÊ²Ã´²»Í¬£¬ÕâÒ²ÐíÖ»·´Ó³³öÒ»¸öÕþÖÎÐÔµÄÏÖÊµ£¬µ«ÎÒÃÇ±È½Ï³öµÄ½á¹ûÓÖÊÇÊ²Ã´ÄØ£¿¶ÔÁË£¬ÎÒÃÇÓ¦¸ÃÊ¹ÓÃ×Ö·û´®²Ù×÷£¬²»¶ÔÂð£¿ 
#!/usr/bin/perl 
# A political evaluation script 
$a = &quot;Al&quot;; 
$b = &quot;George&quot;; 
if ( $a &gt; $b) { print &quot;$a would make a better President. 
&quot;; } 
if ( $a &lt; $b) { print &quot;$b would make a better President. 
&quot;; } 
if ( $a==$b) { print &quot;$a or $b, there's no difference... 
&quot;; } 
&nbsp;&nbsp;&nbsp; ºÇºÇ£¬Êä³ö±íÃ÷ËüÃÇÁ©Ã»ÓÐÊ²Ã´²»Í¬µÄµØ·½]]></description>
		</item>
		<item>
			<title>cgiÑ§Ï°¼òÃ÷½Ì³Ì</title>
			<link>http://www.kingmx.com/article.php?id=12913</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[
µÚÒ»ÕÂ£º»ù´¡µÄ»ù´¡CGI/PERLÑ§Ï°
&nbsp;&nbsp;&nbsp; 1.1 ÎªÊ²Ã´Ê¹ÓÃCGI£¿
&nbsp;&nbsp;&nbsp; ÎÒÃ»ÓÐ°ÑÊ²Ã´ÊÇCGI·ÅÔÚ»ù´¡ÆªµÄµÚÒ»¶Î£¬ÊÇÒòÎªÊµÔÚºÜÄÑËµÃ÷°×µ½µ×Ê²Ã´ÊÇCGI.
&nbsp;&nbsp;&nbsp; ¶øÈç¹ûÄãÏÈÖªµÀCGIÓÐÊ²Ã´×÷ÓÃ£¬½«»áºÜºÃµÄÀí½âCGIÊÇÊ²Ã´Õâ¸ö¸ÅÄî¡£ CGI¿ÉÒÔÎªÎÒÃÇ
&nbsp;&nbsp;&nbsp; Ìá¹©Ðí¶àHTMLÎÞ·¨×öµ½µÄ¹¦ÄÜ¡£±ÈÈça.Ò»¸ö¼ÇÊýÆ÷£» b.¹Ë¿ÍÐÅÏ¢±í¸ñµÄÌá½»ÒÔ¼°Í³¼Æ£»
&nbsp;&nbsp;&nbsp; c.ËÑË÷³ÌÐò£»d.WEBÊý¾Ý¿âµÈµÈ¡£
&nbsp;&nbsp;&nbsp; ÓÃHtmlÊÇÃ»ÓÐ°ì·¨¼Ç×¡¿Í»§µÄÈÎºÎÐÅÏ¢µÄ£¬¾ÍËãÓÃ»§Ô¸ÒâÈÃÄãÖªµÀ¡£ÓÃHtmlÒ²ÊÇÎÞ·¨
&nbsp;&nbsp;&nbsp; °ÑÐÅÏ¢¼ÇÂ¼µ½Ä³Ò»¸öÌØ¶¨ÎÄ¼þÀïµÄ¡£Òª°Ñ¿Í»§¶ÎµÄÐÅÏ¢¼ÇÂ¼ÔÚ·þÎñÆ÷µÄÓ²ÅÌÉÏ£¬¾ÍÒªÓÃµ½
&nbsp;&nbsp;&nbsp; CGI. ÕâÊÇCGI×îÖØÒªµÄ×÷ÓÃ£¬Ëü²¹³äÁËHtmlµÄ²»×ã¡£ÊÇµÄ£¬½ö½öÊÇ²¹³ä£¬²»ÊÇÌæ´ú¡£
&nbsp;&nbsp;&nbsp; 1.2 CGIÊÇÊ²Ã´£¿
&nbsp;&nbsp;&nbsp; ºÃÁË£¬ÏÖÔÚÎÒÃÇÀ´Ëµµ½µ×Ê²Ã´ÊÇCGI.Common Gate IntergaceÌýÆðÀ´ÈÃÈËÓÐÐ©×¨Òµ£¬
&nbsp;&nbsp;&nbsp; ÎÒÃÇ¾Í¹ÜËü½ÐCGIºÃÁË¡£ÔÚÎïÀíÉÏ£¬CGIÊÇÒ»¶Î³ÌÐò£¬ËüÔËÐÐÔÚServerÉÏ£¬Ìá¹©Í¬¿Í»§¶Î
&nbsp;&nbsp;&nbsp; HtmlÒ³ÃæµÄ½Ó¿Ú¡£ÕâÑùËµ´ó¸Å»¹²»ºÃÀí½â¡£ÄÇÃ´ÎÒÃÇ¿´Ò»¸öÊµ¼ÊÀý×Ó£º ÏÖÔÚµÄ¸öÈËÖ÷Ò³
&nbsp;&nbsp;&nbsp; ÉÏ´ó²¿·Ö¶¼ÓÐÒ»¸öÁôÑÔ±¾¡£ÁôÑÔ±¾µÄ¹¤×÷ÊÇÕâÑùµÄ£ºÏÈÓÉÓÃ»§ÔÚ¿Í»§¶ÎÊäÈëÒ»Ð©ÐÅÏ¢£¬
&nbsp;&nbsp;&nbsp; ÈçÃû×ÖÖ®ÀàµÄ¶«Î÷¡£½Ó×ÅÓÃ»§°´Ò»ÏÂ¡°ÁôÑÔ¡±£¨µ½Ä¿Ç°ÎªÖ¹¹¤×÷¶¼ÔÚ¿Í»§¶Ë£©£¬ä¯ÀÀÆ÷°Ñ
&nbsp;&nbsp;&nbsp; ÕâÐ©ÐÅÏ¢´«ËÍµ½·þÎñÆ÷µÄcgiÄ¿Â¼ÏÂÌØ¶¨µÄcgi³ÌÐòÖÐ£¬ÓÚÊÇcgi³ÌÐòÔÚ·þÎñÆ÷ÉÏ°´ÕÕÔ¤¶¨
&nbsp;&nbsp;&nbsp; µÄ·½·¨½øÐÐ´¦Àí¡£ÔÚ±¾ÀýÖÐ¾ÍÊÇ°ÑÓÃ»§Ìá½»µÄÐÅÏ¢´æÈëÖ¸¶¨µÄÎÄ¼þÖÐ¡£È»ºócgi³ÌÐò¸ø¿Í
&nbsp;&nbsp;&nbsp; »§¶Ë·¢ËÍÒ»¸öÐÅÏ¢£¬±íÊ¾ÇëÇóµÄÈÎÎñÒÑ¾­½áÊø¡£´ËÊ±ÓÃ»§ÔÚä¯ÀÀÆ÷Àï½«¿´µ½¡°ÁôÑÔ½áÊø¡±
&nbsp;&nbsp;&nbsp; µÄ×ÖÑù¡£Õû¸ö¹ý³Ì½áÊø¡£
&nbsp;&nbsp;&nbsp; 1.3 Ñ¡ÔñÄãÊìÏ¤µÄ±à³ÌÓïÑÔ
&nbsp;&nbsp;&nbsp; ¼ÈÈ»CGIÊÇÒ»ÖÖ³ÌÐò£¬×ÔÈ»ÐèÒªÓÃ±à³ÌÓïÑÔÀ´Ð´¡£Äã¿ÉÒÔÓÃÈÎºÎÒ»ÖÖÄãÊìÏ¤µÄ¸ß¼¶ÓïÑÔ£¬
&nbsp;&nbsp;&nbsp; C£¬C++£¬C shellºÍVB.ÖµµÃÌØ±ðÖ¸³öµÄ£¬ÓÐÒ»ÖÖ½ÐPerlµÄÓïÑÔ¡£ÆäÇ°ÉíÊÇÊôÓÚUnix×¨ÓÃµÄ
&nbsp;&nbsp;&nbsp; ¸ß¼¶ÓïÑÔ£¬Æä¾ßÓÐÇ¿´óµÄ×Ö·û´®´¦ÀíÄÜÁ¦¶ø³ÉÎªÏÖÔÚÐ´CGI£¬ÌØ±ðÊÇ±íµ¥Àà³ÌÐòµÄÊ×Ñ¡¡£×î
&nbsp;&nbsp;&nbsp; ½üËüÒÑ¾­ÓÐÁËWindow95£¬ºÍwinnt°æ±¾¡£Äã¿ÉÒÔÔÚËÑË÷³ÌÐòÀïÕÒµ½ÔÚÄÇÀïÏÂÔØËü¡£ VBÊÇMs
&nbsp;&nbsp;&nbsp; µÄÉ±ÊÖïµ£¬´ÓÄ¿Ç°µÄÇé¿ö¿´£¬Î¢Èí¹«Ë¾ÕýÊÔÍ¼Ê¹VBÎÞËù²»ÄÜ¡£×ÔÈ»Ò²°üÀ¨ÔÚInternet Çë¸÷
&nbsp;&nbsp;&nbsp; Î»×¢Òâ£¬VB¿ª·¢µÄ³ÌÐòÖ»ÄÜÔÚwindowsÆ½Ì¨ÉÏ±»Ö´ÐÐ£¬ËùÒÔËüÓÐÒ»¶¨¾ÖÏÞ¡£ C Shell£¬¾­µä
&nbsp;&nbsp;&nbsp; µÄÓïÑÔ¡£¿ÉÏ§ÄÜ×öµÄÊÂÇé²»¶à£¬¶øÇÒ±ØÐëÔÚUnixÆ½Ì¨ÏÂ¡£ C£¬C++£¬ÕýÕæµÄÎÞËù²»ÄÜ¡£¿ÉÊÇ
&nbsp;&nbsp;&nbsp; ÔÚÐ´CGIµÄÊ±ºòÏÔµÃ·Ç³£ÄÑÒÔÕÆÎÕ¡£ÌØ±ðÊÇÈ±·¦¿ÉÒÔÁé»îÊ¹ÓÃµÄ×Ö·û´®´¦Àíº¯Êý¡£¶Ô³ÌÐòÔ±
&nbsp;&nbsp;&nbsp; µÄÒªÇóÒ²±È½Ï¸ß£¬Î¬»¤¸´ÔÓ¡£ ×îºóÒªÌáÐÑ¸÷Î»£¬ÒòÎªCGIÊÇServerºÍClinetµÄ½Ó¿Ú£¬ËùÒÔ
&nbsp;&nbsp;&nbsp; ¶ÔÓÚ²»Í¬µÄServer£¬CGI³ÌÐòµÄÒÆÖµÊÇÒ»¸öºÜ¸´ÔÓµÄÎÊÌâ¡£Ò»°ã¶ÔÓÚ²»Í¬µÄServer£¬¾öÃ»ÓÐ
&nbsp;&nbsp;&nbsp; Á½¸ö¿ÉÒÔ»¥ÏàÍ¨ÓÃµÄCGI.Êµ¼ÊÉÏ Õâ¾ÍÊÇCGI³ÌÐò×î¸´ÔÓµÄµØ·½¡£
&nbsp;&nbsp;&nbsp; 1.4 °²È«
&nbsp;&nbsp;&nbsp; ÎÒÏë¸÷Î»Ãô¸ÐµÄÅóÓÑÓÖÒªÎÊÎÒ¹ØÓÚ°²È«ÐÔÄÜµÄÎÊÌâÁË¡£Êµ¼ÊÉÏCGIÊÇ±È½Ï°²È«µÄ£¬ÖÁÉÙ
&nbsp;&nbsp;&nbsp; ±ÈÄÇÐ©Ã»ÓÐÊý×ÖÇ©ÃûµÄActiveX¿Ø¼þÒª°²È«µÄ¶à¡£³ý·ÇÄãÓÐÒâÔÚ³ÌÐòÀï¼ÓÈëÁËÆÆ»µServerµÄ
&nbsp;&nbsp;&nbsp; ÃüÁî£¬ ·ñÔòÒ»°ã²»»áÓÐÊ²Ã´ÑÏÖØµÄºó¹û¡£¶ø¸öÈËÍøÕ¾²»Ïò´óÖÚ¿ª·ÅCGIÄ¿Â¼£¬ÔòÒòÎªÅÂ¸÷Î»
&nbsp;&nbsp;&nbsp; Ñ§Ï°²»¾«£¬ÎÞ¶ËÔö¼Ó·þÎñÆ÷µÄ¸ºµ££¬ËùÒÔÒ»°ã²»Ìá¹©¡£
&nbsp;&nbsp;&nbsp; Ð¡½á£º±¾ÕÂ½²ÊöÁËCGI»ù±¾¸ÅÄî£¬Ò²ËµÃ÷ÁË¸÷ÖÖ±à³ÌÓïÑÔµÄÓÅÈ±µã£¬Í¬Ê±½âÊÍÁËÎªÊ²Ã´¸öÈË
&nbsp;&nbsp;&nbsp; ÍøÕ¾²»Ìá¹©CGIµÄÔ­Òò¡£½ÓÏÂÀ´ÎÒÃÇ¿ªÊ¼ÕýÊ½Ñ§Ï°¡£
µÚ¶þÕÂ HtmlµÄ±íµ¥»ù´¡ÖªÊ¶
&nbsp;&nbsp;&nbsp; ×é³ÉCgi³ÌÐòµÄÊÇÁ½²¿·Ö£¬Ò»²¿·ÖÊÇhtmlÒ³Ãæ£¬¾ÍÊÇÓÃ»§¿´µ½µÄ¶«Î÷¡£ÁíÒ»²¿·ÖÔòÊÇÔË
&nbsp;&nbsp;&nbsp; ÐÐÔÚ·þÎñÆ÷ÉÏµÄ³ÌÐò¡£Ò»°ãÀ´Ëµ£¬ÎÒÃÇÏÈÐ´htmlÒ³Ãæ£¬ÔÙÐ´³ÌÐò¡£ËùÒÔÎÒÃÇµÄÑ§Ï°Ò³ÊÇÕâÑù£¬
&nbsp;&nbsp;&nbsp; ÏÈ¿´¿´±íµ¥µÄÐ´·¨£¬ÔÙÈ¥Ñ§Ï°CGI³ÌÐò¡£
&nbsp;&nbsp;&nbsp; ¶ÔÓÚhtmlµÄ±íµ¥£¬ÓÐ±È½Ï¸´ÔÓºÍÏêÏ¸µÄ¹æ¶¨¡£µ«ÓÉÓÚËüÃÇÊÇÊôÓÚhtml±ê×¼ÀïµÄ¶«Î÷£¬Ëù
&nbsp;&nbsp;&nbsp; ÒÔÎÒ²»´òËãÏêÏ¸½²½â¡£×îºÃÊÇÄã×Ô¼ºÕÒ±¾Êé¿´¿´¡£
&nbsp;&nbsp;&nbsp; Html±íµ¥
&nbsp;&nbsp;&nbsp; &lt;Form&gt;&lt;/Form&gt;±ê¼Ç°ÑÊäÈëÓò×éºÏÆðÀ´£¬²¢ÇÒËµÃ÷ÁË±íµ¥Ìá½»µÄ·½Ê½ºÍµØµã¡£Form±êÇ©ÓÐÐí
&nbsp;&nbsp;&nbsp; ¶àÊôÐÔ£¬±ÈÈçNAMEµÈµÈ¡£¾ßÌåµÄÊôÐÔ£¬½«ÔÚÊ¹ÓÃµÄÊ±ºòËµÃ÷¡£
&nbsp;&nbsp;&nbsp; ÔÚFORMÀï»¹ÓÐÐí¶à²»Í¬µÄ±êÇ©£¬ÕýÊÇËüÃÇ×é³ÉÁË±íµ¥µÄ¸÷ÖÖ³É·Ö¡£
&nbsp;&nbsp;&nbsp; &lt;INPUT [TYPE=TEXT] NAME=&quot;TEXT-ID&quot; [SIZE=NN] [MAXLENGTH=NN]
&nbsp;&nbsp;&nbsp; [VALUE='DEFAULT TEXT']&gt;
&nbsp;&nbsp;&nbsp; ¸ÃÓï¾äÔÚHTMLÀï²úÉúÒ»¸öÎÄ±¾±êÇ©£¬[]Àï±íÊ¾¸ÃÊôÐÔÊÇ¿ÉÑ¡µÄ¡£
&nbsp;&nbsp;&nbsp; &lt;INPUT TYPE=SUBMIT [NAME='BUTTON-ID'][VALUE=&quot;BUTTON LABLE TEXT&quot;]&gt;
&nbsp;&nbsp;&nbsp; ¸ÃÓï¾ä²úÉúÒ»¸öÌá½»°´¼ü£¬ÓÃÓÚ±íµ¥µÄÌá½»¡£ËüÌá¹©Ò»¸ö·¢ËÍ±íµ¥µÄ°´Å¦£¬ÐÅÏ¢·¢Ïò&lt;FORM&gt;
&nbsp;&nbsp;&nbsp; ±ê¼ÇÀïACTIONÊôÐÔÀï¸ø³öµÄURL.¸ù¾Ý±íµ¥·½·¨£¨METHOD£©Ö¸¶¨µÄHTTPÇëÇóÀàÐÍ Ìá½»ÐÅÏ¢¡£
&nbsp;&nbsp;&nbsp; ÔÚÒÔºóÎÒ½«ÏêÏ¸½²½â¡£
&nbsp;&nbsp;&nbsp; &lt;INPUT TYPE=RESET[VALUE='BUTTON LABEL TEXT']&gt;
&nbsp;&nbsp;&nbsp; ¾ßÓÐTYPE=RESETÊôÐÔµÄINPUT½«²úÉúÒ»¸ö°´Å¥£¬ËüÄÜÖØÖÃ±íµ¥¸÷¸öÓò µÄÄÚÈÝµ½³õÊ¼×´Ì¬¡£
&nbsp;&nbsp;&nbsp; &lt;INPUT TYPE=RADIO NAME=&quot;RADIO-SET -ID&quot; vALUE=&quot;CHOICE-ID&quot; [CHECKED]&gt;
&nbsp;&nbsp;&nbsp; ±íµ¥¿ÉÒÔÓÃ´Ë±ê¼ÇÌáÊ¾ÓÃ»§´Ó¼¸¸öÑ¡ÔñÏîÀï×÷³öÑ¡Ôñ¡£Ã´¸öÑ¡ÔñÏîÄ¿¶¼ÊÇÒ»¸öµ¥Ñ¡°´Å¥ËüÃÇ
&nbsp;&nbsp;&nbsp; ¾ßÓÐÏàÍ¬µÄNAMEÖµ¡£ÔÚÈÎºÎÊ±ºòÖ»ÒªÓÐÒ»¸ö±»Ñ¡ÖÐ¡£´Ë±ê¼ÇÓÐÒ»¸öVALUEÊôÐÔ£¬Èç¹ûËü±»Ñ¡
&nbsp;&nbsp;&nbsp; ÖÐ£¬Ôò·¢ËÍ±íµ¥Ê±½«ÒÔ&quot;RADIO-SET-ID=CHOICE-ID&quot;µÄÐÎÊ½·¢ËÍ¡£
&nbsp;&nbsp;&nbsp; &lt;INPUT TYPE=CHECKBOX NAME='BOX-SET-ID' VALUE='CHOICE-ID' [CHECKED]&gt;
&nbsp;&nbsp;&nbsp; ´Ë±êÇ©½«²úÉúÒ»¸ö'OFF'»ò'ON'µÄ¿ª¹Ø¡£ËüÍ¬RADIOÏàËÆ£¬µ«ÊÇ¿ÉÒÔ¶àÑ¡¡£µ±Ìá½»±íµ¥µÄÊ±ºòÈç
&nbsp;&nbsp;&nbsp; ¹ûÒ»¸ö¸´Ñ¡¿òÊÇÑ¡ÖÐµÄ¶ö£¬ÄÇÃ´ËüµÄVALUEÊôÐÔ×÷ÎªBOX-SET-ID±íµ¥Êý¾ÝµÄÖµ±»Ìá½»¡£¼¸¸ö
&nbsp;&nbsp;&nbsp; ÓµÓÐÍ¬ÑùNAMEÊôÐÔµÄ¸´Ñ¡¿òÎªÒ»×é¡£ËüÃÇÓÃ'£¬'·Ö¿ªµÄÁÐ±í¡£
µÚÈýÕÂ£º´«ËÍ·½Ê½ CGI/PERLÑ§Ï° 
&nbsp;&nbsp;&nbsp; ´«ËÍ·½·¨£º
&nbsp;&nbsp;&nbsp; ËùÎ½·½·¨ÊÇÖ¸µ÷ÓÃCGI³ÌÐòµÄÍ¾¾¶¡£ÊÂÊµÉÏ£¬ÒªÖ´ÐÐ³ÌÐòÊ±£¬ÄãÓÃÒ»ÖÖ·½·¨Ïò·þÎñÆ÷Ìá
&nbsp;&nbsp;&nbsp; ³öÇëÇó£¬´ËÇëÇó¶¨ÒåÁË³ÌÐòÈçºÎ½ÓÊÜÊý¾Ý¡£ ÏÂÃæ½éÉÜ×î³£ÓÃµÄÁ½ÖÖ·½·¨£ºgetºÍpost
&nbsp;&nbsp;&nbsp; 1.GET¡¡µ±Ê¹ÓÃÕâÖÖ·½·¨Ê±£¬CGI³ÌÐò´Ó»·¾³±äÁ¿QUERY_STRING»ñÈ¡Êý¾Ý¡£QUERY_STRING±»
&nbsp;&nbsp;&nbsp; ³ÆÎª»·¾³±äÁ¿£¬¾ÍÊÇÕâÖÖ»·¾³±äÁ¿°Ñ¿Í»§¶ËµÄÊý¾Ý´«¸ø·þÎñÆ÷¡£ÎªÁË½âÊÍºÍÖ´ÐÐ³ÌÐò£¬CGI
&nbsp;&nbsp;&nbsp; ±ØÐëÒª·ÖÎö£¨´¦Àí£©´Ë×Ö·û´®¡£µ±ÄãÏë´Ó·þÎñÆ÷»ñµÃÊý¾Ý²¢ÇÒ²»¸Ä±ä·þÎñÆ÷ÉÏµÄÊý¾ÝÊ±£¬
&nbsp;&nbsp;&nbsp; ÄãÓ¦¸ÃÑ¡ÓÃGET.µ«Èç¹ûÄãµÄ×Ö·û´®³¤¶È³¬¹ýÁËÒ»¶¨³¤¶È£¬ÄÇÃ´»¹ÊÇÑ¡ÓÃPOST·½·¨¡£
&nbsp;&nbsp;&nbsp; 2.POST¡¡Ê¹ÓÃPOST·½·¨Ê±£¬WEB·þÎñÆ÷Í¨¹ýstdin£¨±ê×¼ÊäÈë£©£¬ÏòCGI³ÌÐò´«ËÍÊý¾Ý¡£·þÎñ
&nbsp;&nbsp;&nbsp; Æ÷ÔÚÊý¾ÝµÄ×îºóÃ»ÓÐÊ¹ÓÃEOF×Ö·û±ê¼Ç£¬Òò´Ë³ÌÐòÎªÁËÕýÈ·µÄ¶ÁÈ¡stdin£¬±ØÐëÊ¹ÓÃ
&nbsp;&nbsp;&nbsp; CONTENT_LENGTH .µ±Äã·¢ËÍµÄÊý¾Ý½«¸Ä±äWeb·þÎñÆ÷¶ËµÄÊý¾Ý»òÕßÄãÏë¸øCGI³ÌÐò´«ËÍµÄÊý
&nbsp;&nbsp;&nbsp; ¾Ý³¬¹ýÁË1024 ×Ö½Ú£¬ÕâÊÇurlµÄ¼«ÏÞ³¤¶È£¬ÄãÓ¦¸ÃÊ¹ÓÃpost·½·¨¡£
&nbsp;&nbsp;&nbsp; 3.ÊµÏÖ·½·¨£º
&nbsp;&nbsp;&nbsp; ÉÏ´Î½²¹ýhtmlÖÐµÄ&lt;Form&gt;±êÇ©£¬¶ÔÓÚ´«ËÍÊý¾Ý·½·¨µÄ¶¨ÒåÒ²ÔÚÕâ¸ö±êÇ©Àï¶¨Òå¡£ ÈçÏÂ£º
&nbsp;&nbsp;&nbsp; &lt;form name=&quot;guyi's form&quot; action=http://www.yourname.com/cgi/your.cgi method=GET&gt;
&nbsp;&nbsp;&nbsp; ¶¨ÒåÁËÒ»¸öÒÔget·½·¨´«ËÍÊý¾ÝµÄform£¬ËüµÄ·þÎñ¶Ë³ÌÐòÊÇhttp://www.yourname.com/cgi/your.cgi.
&nbsp;&nbsp;&nbsp; Í¬ÑùµÄÈçÏÂµÄ¶¨Òå½«Ê¹ÓÃpost·½·¨¡£
&nbsp;&nbsp;&nbsp; &lt;form method=post&gt;µÚËÄÕÂ£º»ù±¾µ÷ÊÔ»·¾³µÄ½¨Á¢ 
&nbsp;&nbsp;&nbsp; »ù±¾µ÷ÊÔ»·¾³µÄ½¨Á¢£º
&nbsp;&nbsp;&nbsp; ÎÒÏë²»ÊÇÃ¿¸öÔÄ¶Á½Ì³ÌµÄÅóÓÑÓÐ»ú»á½Ó´¥µ½·þÎñÆ÷Ö®ÀàµÄ¶«Î÷µÄ¡£ËùÒÔÔÚ½ÓÏÂÈ¥µÄÔÄ
&nbsp;&nbsp;&nbsp; ¶Á¹ý³ÌÖÐÃ»ÓÐµ÷ÊÔ»·¾³µÄÅóÓÑ½«»á·Ç³£³ÔÁ¦¡£ÎªÁË½â¾öÕâ¸öÎÊÌâ£¬ÎÒÌØ±ð½éÉÜÒ»ÖÖÔÚ
&nbsp;&nbsp;&nbsp; win95»òntÉÏ½¨Á¢WEB SITEµÄ·½·¨£¬ÒÔ±ã¸÷Î»ÄÜºÜºÃµÄÔÄ¶Á³ÌÐò¡£²»¹ý±¾·½·¨ÄÚÊ¹ÓÃµÄÈí
&nbsp;&nbsp;&nbsp; ¼þ¶¼±È½Ï´ó£¬Èç¹ûÄã²»ÊÇÒ»¸öÕæÕýµÄÍøÂç·¢ÉÕÓÑ£¬»òÐíÄã»á·ÅÆúÕâ¸ö½Ì³Ì¡£Õâ¸öÎÒÒ²Ã»
&nbsp;&nbsp;&nbsp; ÓÐ°ì·¨£¬ÒªÖªµÀÏ²»¶Ò»Ñù¶«Î÷×ÜÊÇÒª¸¶³ö´ú¼ÛµÄ¡£
&nbsp;&nbsp;&nbsp; 1.win95&amp;winntµÄServerÈí¼þ£º
&nbsp;&nbsp;&nbsp; Ê×ÏÈÎÒÒª¸÷Î»ÅªÇå³þÒ»¸ö¸ÅÄî£¬ËùÎ½SeverÖ»ÊÇÖ¸ÔÚÒ»Ì¨µçÄÔÉÏ°²×°ÁËÒ»¸öÌØ±ðµÄÈí¼þ¡£
&nbsp;&nbsp;&nbsp; ¸ÃÈí¼þ¿ÉÒÔÌá¹©internet web site·þÎñ¡£ÕâÌ¨µçÄÔ²»Ò»¶¨ÒªÊÇÊ²Ã´ÌØ±ðºÃµÄ»úÆ÷£¬Ö»ÒªËü
&nbsp;&nbsp;&nbsp; ÄÜ¹»ºÜºÃµÄÔËÐÐServerÈí¼þ¾Í¿ÉÒÔÁË¡£±ÈÈçÎÒÃÇµÄ¸öÈËµçÄÔ¾Í¿ÉÒÔ³Ðµ£Õâ¸öÈÎÎñ¡£ ÔÚ
&nbsp;&nbsp;&nbsp; Windows95ÏÂÔËÐÐµÄserverÈí¼þ²»ÊÇºÜ¶à£¬¶øÇÒÊÇÊôÓÚ¡°ÒµÓà¡±µÄ¡£¾ÍÊÇËµÀëÕæÕýµÄÉÌÒµÊ¹
&nbsp;&nbsp;&nbsp; ÓÃÓÐºÜ´óµÄ¾àÀë¡£ÕâÖ÷ÒªÊÇwindows95Æ½Ì¨µÄ¾ÖÏÞ£¬±ÈÈçºÜ²îµÄ°²È«ÐÔ£¬²»ÎÈ¶¨µÄÄÚ´æ·ÖÅä
&nbsp;&nbsp;&nbsp; ÏµÍ³£¬»ìÂÒµÄÎÄ¼þÏµÍ³ÒÔ¼°×î²îµÄ½ø³Ì¹ÜÀí¡£²»¹ýÕâÐ©²»Ó°ÏìÎÒÃÇÊ¹ÓÃCGI³ÌÐò£¬ÌØ±ðÊÇÒ»
&nbsp;&nbsp;&nbsp; ¸öÈËµ÷ÊÔ×Ô¼ºµÄ³ÌÐò£¬¶ø²»ÊÇ·ÅÔÚinternet¸øÊýÍò¸öÈË·ÃÎÊ¡£Æä´ú±íÊÇMSÔÚwindows OSRÀë
&nbsp;&nbsp;&nbsp; Ìá¹©µÄpws£¨person web server£©¡£Äã¿ÉÒÔÍ¨¹ý¿ØÖÆÃæ°æ€€€€&gt;ÍøÂç€€€€&gt;·þÎñ€€€€&gt;Ms€€€€&gt;¸öÈËWEB·þ
&nbsp;&nbsp;&nbsp; ÎñÆ÷°²×°Ëü¡£²»¹ýÎÒÏ£ÍûÄãÃÇ×îºÃ»¹ÊÇ²»ÒªÊ¹ÓÃÕâ¸ö¶«Î÷£¬ÒòÎªËü¶ÔÎÒÃÇÏÂÃæµÄ¿Î³ÌÃ»ÓÐÊ²
&nbsp;&nbsp;&nbsp; Ã´°ïÖú¡£ÎÒÔøÊÔÑé¹ýÓÃËüÀ´ºÍÎÒµÄperl³ÌÐòÏàÁ¬£¬µ«ºÜÏÔÈ»²»Ö§³Öperl.ËäÈ»ÓÐÏûÏ¢ËµÐÞ¸Ä
&nbsp;&nbsp;&nbsp; ×¢²á±í¿ÉÒÔ½â¾öÕâ¸öÎÊÌâ£¬µ«ÎÒµ½ÏÖÔÚ»¹ÊÇÃ»ÓÐÕÒµ½·½·¨¡£Ïà¶Ô¶øÑÔ£¬Windows NTÒòÎªÆä¶¨
&nbsp;&nbsp;&nbsp; Î»µÄ²»Í¬¶ø¿ÉÒÔÌá¹©½ÏÀíÏëµÄ²Ù×÷Æ½Ì¨¡£¶øÇÒNT×Ô´øÓÐIIS£¨Internet Information Server£©¡£
&nbsp;&nbsp;&nbsp; ²»¹ýÊÇ2.0°æµÄ£¬Èç¹ûÄãÓÐIIS3.0¾Í¸üºÃÁË¡£µ½±¾ÎÄÐ´³ÉµÄÊ±ºò£¬IISÒÑ¾­ÓÐÁË4.0°æ±¾¡£µ±
&nbsp;&nbsp;&nbsp; È»ÎÒÏàÐÅ²»ÊÇËùÓÐÈË»áÈ¥ÏÂÔØÕâ¸ö¶«Î÷£¬ÒòÎªÓÐ 104M.
&nbsp;&nbsp;&nbsp; ÉÏÃæ½²ÁËÕâÃ´¶à£¬Êµ¼ÊÉÏÎÒÒª¸ø¸÷Î»ÍÆ¼öµÄÊÇWebSite for win95&amp;NT.¾ÍÊÇËµÁ½¸ö²Ù×÷
&nbsp;&nbsp;&nbsp; ÏµÍ³¶¼¿ÉÒÔÊ¹ÓÃËü¡£ÏÖÔÚµÄ°æ±¾ÊÇ2.1£¬ÓÐ17M.ÏÔÈ»ÊÇÒ»¸öºÜ´óµÄÈí¼þ£¬²»¹ýÕýÈçÎÒËµµÄ£¬
&nbsp;&nbsp;&nbsp; Ï²»¶Ò»Ñù¶«Î÷ÊÇÓÐ´ú¼ÛµÄ]]></description>
		</item>
		<item>
			<title>Perl³£¼ûÌØÊâ±äÁ¿</title>
			<link>http://www.kingmx.com/article.php?id=12914</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[
1. $_ 
$ARG£¬³£³£ÊÇÒ»¸öÄ¬ÈÏ±äÁ¿ 
2. @_ 
@ARG£¬×ÓÀý³Ì²ÎÊý±í 
3. {row.content} 
$PROGRAM_NAME£¬±¾³ÌÐòµÄÃû×Ö 
4. @ARGV 
±¾³ÌÐòµÄÃüÁîÐÐ²ÎÊý±í 
5. $&quot; 
$LIST_SEPARATOR£¬Êý×éÄÚ²åµ½Ë«ÒýºÅ×Ö·û´®ÖÐÊ±ËùÓÃµÄ·Ö¸ô·û£¬ 
Ä¬ÈÏÎª¿Õ¸ñ 
6. $, 
$OFS£¬»ò$OUTPUT_FIELD_SEPARATOR£¬ÓÃÓÚprintµÄÊä³ö×Ö¶Î·Ö¸ô·û£¬ 
¼´Ò»¸öprintÓï¾äÖÐÓÃ¶ººÅ·Ö¸ôµÄ²¿·ÖÖ®¼äÓÃÊ²Ã´·Ö¸ô£¬Ä¬ÈÏÎªÎÞ 
7. $ 
$ORS£¬»ò$OUTPUT_RECORD_SEPARATOR£¬ÓÃÓÚprintµÄÊä³ö¼ÇÂ¼·Ö¸ô·û£¬ 
¼´Ò»¸öprintÓï¾ä½áÊøÊ±Ä©Î²Ìí¼ÓÊ²Ã´£¬Ä¬ÈÏÎªÎÞ 
8. $/ 
$RS£¬»ò$INPUT_RECORD_SEPARATOR£¬ÊäÈë¼ÇÂ¼·Ö¸ô·û£¬¸Ä±äÁËreadline£¬ 
&lt;FH&gt;ºÍchomp¶ÔÓÚ¡°ÐÐ¡±µÄ¿´·¨£¬Ä¬ÈÏÎª»»ÐÐ·û 
9. $. 
$NR£¬»ò$INPUT_LINE_NUMBER£¬×îºó¶ÁÈ¡µÄ¡°ÐÐ¡±ºÅ(×¢ÒâÐÐµÄ¸ÅÄî¿ÉÄÜ 
±»8Ëù¸Ä±ä) 
10. $| 
$AUTOFLUSH£¬»ò$OUTPUT_AUTOFLUSH£¬Êä³ö»º³åÇø¿ª¹Ø£¬Ä¬ÈÏÎª0£¬¼´¹Ø 
11. $$ 
$PID£¬»ò$PROCESS_ID£¬±¾½Å±¾µÄ½ø³ÌºÅ(PID) 
12. $! 
$ERRNO£¬»ò$OS_ERROR£¬ÉÏÒ»´ÎÏµÍ³µ÷ÓÃ´íÎóÖµ 
13. $@ 
$EVAL_ERROR£¬ÉÏÒ»´Îeval²Ù×÷´íÎóÖµ 
14. $^I 
$INPLACE_EDIT£¬ÏÖ³¡±à¼­µÄ±¸·ÝÎÄ¼þÀ©Õ¹Ãû 
15. %ENV 
µ±Ç°»·¾³±äÁ¿ 
16. ÓëÕýÔò±í´ïÊ½Ïà¹ØµÄ¼¸¸öÁ¿ 
|&lt;-($`)-&gt;|&lt;-($&amp;)-&gt;|&lt;-($')-&gt;| 
/ ------- mmmmmmmm ++++++++/ =&gt; ÕýÔò±í´ïÊ½(×¢Òâ£º¿Õ¸ñ²»´ú±íÊµ¼Ê¿Õ¸ñ) 
| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Æ¥Åä²¿·Ö| 
0 &nbsp;($-[0]) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;($+[0]) 
17. $^O 
²Ù×÷ÏµÍ³Ãû³Æ¡£ 
»òÕß 
use English; 
print $OSNAME; 
»òÕß 
use Config; 
print $Config{'osname'}; 
]]></description>
		</item>
		<item>
			<title>Perl¼òµ¥Ä£¿éÖ¸ÄÏ</title>
			<link>http://www.kingmx.com/article.php?id=12297</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[
ÏÂÃæÊÇÕâ¸öÄ£¿éµÄÄÚÈÝ£º
MyModule.pm
packageMyModule;usestrict;useExporter;usevarsqw([qw(&func1)],Both=>[qw(&func1&func2)]);subfunc1{returnreverse@_}subfunc2{returnmap{uc}@_}1">$VERSION@ISA@EXPORT@EXPORT_OKEXPORT_TAGS);$VERSION=1.00;@ISA=qw(Exporter);@EXPORT=();@EXPORT_OK=qw(func1func2);EXPORT_TAGS=(DEFAULT=&gt;[qw(&amp;func1)],Both=&gt;[qw(&amp;func1&amp;func2)]);subfunc1{returnreverse@_}subfunc2{returnmap{uc}@_}1;
Ê×ÏÈ£¬ÎÒÃÇ½«Í¨¹ýÉùÃ÷&quot;package&quot;Ãû×ÖÀ´»ñµÃÒ»¸öÃû×Ö¿Õ¼ä¡£Õâ½«È·±£Ä£¿éÖÐµÄ·½·¨Óë±äÁ¿£¬ºÍµ÷ÓÃËûÃÇµÄ´úÂëËù·Ö¸ô¿ªÀ´¡£usestrictÔÚÄ£¿éÖÐÊÇÒ»¸ö·Ç³£ºÃµÄ×ö·¨£¬Õâ½«Ê¹Perl¶ÔÊ¹ÓÃÈ«¾Ö±äÁ¿×ö³öÒ»¶¨µÄÔ¼Êø¡£ÏêÏ¸½éÉÜ²Î¿´&quot;usestrictwarningsanddiagnosticsordie&quot;¡£ 
ÎÒÃÇÐèÒªÓÃExporterÄ£¿éÀ´½«ÎÒÃÇµÄº¯Êý´ÓMyModule::namespaceÊä³öµ½main::namespace£¬ÈÃÊ¹ÓÃMyModuleµÄ³ÌÐò¿ÉÒÔÊ¹ÓÃÕâÐ©º¯Êý¡£ÎªÁËusestrict£¬ÎÒÃÇ±ØÐëÊ¹ÓÃusevarsÀ´ÉùÃ÷Ò»Ð©±äÁ¿¡£µ±È»£¬ÔÚ5.6°æ±¾ÒÔÉÏÎÒÃÇ»¹¿ÉÒÔÊ¹ÓÃourÀ´ÉùÃ÷±äÁ¿¡£ÎÒÃÇÏÖÔÚÉèÖÃÒ»¸ö$VERSIONÊýÖµ£¬È»ºóÍ¨¹ýÊ¹ÓÃ@ISAÀ´Ê¹µÃExporter³ÉÎªMyModuleµÄÒ»²¿±¾¡£ÏëÒªÁË½â@ISAÊÇÊ²Ã´ÒÔ¼°ÈçºÎÊ¹ÓÃµÈÏ¸½Ú£¬Çë²Î¿¼&quot;Code::Police&quot;£©£¬µ«ÆäÖÐ1ÊÇ×î·½±ãµÄ¡£
MySciprt.pl£¨Ê¹ÓÃMyModuleµÄÒ»¸öÀý×Ó£©
#!/usr/bin/perl-wusestrict;#youmayneedtoset@INChere(seebelow)my@list=qw(Just~Another~Perl~Hacker!);#case1#useMyModule;#printfunc1(@list),&quot;n&quot;;#printfunc2(@list),&quot;n&quot;;#case2#useMyModuleqw(&amp;func1);#printfunc1(@list),&quot;n&quot;;#printMyModule::func2(@list),&quot;n&quot;;#case3#useMyModuleqw(:DEFAULT);#printfunc1(@list),&quot;n&quot;;#printfunc2(@list),&quot;n&quot;;#case4#useMyModuleqw(:Both);#printfunc1(@list),&quot;n&quot;;#printfunc2(@list),&quot;n&quot;;
ÕýÈçÉÏÃæËù¼û£¬ÎÒÃÇÔÚMyScript.plÖÐÊ¹ÓÃÁËMyModule¡£°ÑÖÐ¼äµÄ×¢ÊÍ·ûºÅ¶¼È¥µôÀ´¿´¿´»á·¢ÉúÊ²Ã´¡£Ò»´Î¶¼È¥µô¼´¿É¡£Case1:ÒòÎªÎÒÃÇµÄÄ£¿éÄ¬ÈÏÊ²Ã´¶¼Ã»ÓÐÊä³ö£¨Ã»ÓÐÊä³ö&amp;func1ºÍ&amp;func2£©£¬ËùÒÔÎÒÃÇ»áµÃµ½Ò»¸öËûÃÇÔÚmain::namespaceÖÐ²»´æÔÚµÄ´íÎó¡£Case2:Õâ¸öÔËÐÐÕý³£¡£ÎÒÃÇÈÃÄ£¿éÊä³öÁË&amp;func1,ÓÚÊÇÎÒÃÇ¿ÉÒÔÕý³£Ê¹ÓÃËü¡£¾¡¹ÜÎÒÃÇÃ»ÓÐÊä³ö&amp;func2£¬µ«ÊÇÎÒÃÇÊ¹ÓÃµÄÊÇ&amp;func2ÍêÕûµÄ°üÂ·¾¶£¬ËùÒÔËüÒ²¿ÉÒÔÕý³£¹¤×÷¡£Case3:¡®:DEFAULT¡¯±êÇ©Ó¦¸ÃÊä³ö&amp;func1£¬ËùÒÔÄãÓ¦¸ÃÏ£Íû·µ»ØÒ»¸öÈ±ÉÙ&amp;func2º¯ÊýµÄ´íÎó¡£µ«ÊÂÊµÉÏperlÈ´Æ«Æ«ÕÒÉÏÁË&amp;func1µÄÂé·³£¨´íÎóÐÅÏ¢ÌáÊ¾Î´¶¨Òå&amp;func1º¯Êý£©¡£¶÷,ÕâÀïÔõÃ´ÁËÄØ£¿Ô­À´£¬DEFAULTÕâ¸ö±êÇ©Ãû×ÖÊÇÌØÊâµÄ£¬ÔÚÎÒÃÇµÄÄ£¿éÖÐ£¬EXPORT_TAGS¹þÏ£±íËü»á±»×Ô¶¯ÉèÖÃ³ÉÕâÑùDEFAULT=&gt;@EXPROT.Ò²¾ÍÊÇËµ£¬DEFAULTÄ¬ÈÏµ¼³öµÄÊÇÀ´×Ô@EXPROTÊý×éµÄº¯Êý¡£Case4:ÎÒÃÇÖ¸¶¨Í¨¹ý¡®:Both¡¯±êÇ©ÊµÏÖÁ½¸öº¯Êý¶¼Êä³ö£¬ËûÊµÏÖÁË¡£*¹ØÓÚ@INCµÄ×¢ÒâÊÂÏî*µ±ÄãÌá½»Ò»¸öuseMyModuleµÄÊ±ºò£¬¾Í»áÖ¸Ê¾perlÈ¥ËÑË÷@INCÊý×éÖÐÊÇ·ñÓÐ´ËÄ£¿éÃû¡£@INCÍ¨³£°üº¬£º
/perl/lib/perl/site/lib.
¡°.¡±Õâ¸öÄ¿Â¼±íÊ¾µ±Ç°µÄ¹¤×÷Ä¿Â¼¡£ºËÐÄÄ£¿éÊÇ°²×°ÔÚperl/libÄ¿Â¼ÖÐ£¬·ÇºËÐÄÄ£¿é°²×°ÔÚperl/site/libÄ¿Â¼ÖÐ¡£Äã¿ÉÒÔÏò@INCÖÐÌí¼Ó×Ô¶¨ÒåÄ¿Â¼¡£ÏñÏÂÃæÕâÑù£º
BEGIN{push@INC,'/my/dir'}#orBEGIN{unshift@INC,'/my/dir'}#oruselib'/my/dir';
ÎÒÃÇÐèÒªÊ¹ÓÃBEGIN¿éÔÚ±àÒëÊ±Ïò@INCÖÐÌí¼ÓÖµ£¬´ËÊ±ÊÇperl¼ì²éÄ£¿éµÄÊ±¿Ì¡£ 
Èç¹ûÄãµÈµ½³ÌÐò±»±àÒëµÄÊ±ºò¾ÍÌ«ÍíÁË£¬perl»áÅ×³öÒ»¸öÒì³££¬Ëµ¡°ÔÚ@INCÖÐÎÞ·¨ÕÒµ½MyModule¡±.Ê¹ÓÃpush»¹ÊÇunshift·½·¨Ìí¼ÓÖµµÄÇø±ðÊÇ£¬perlËÑË÷@INCµÄË³ÐòÊÇ´Ó@INCÖÐµÄµÚÒ»¸öÄ¿Â¼¿ªÊ¼µÄ¡£Èç¹ûÄãÔÚ/perl/lib/¡¢/perl/site/lib/ºÍ./ÖÐ¶¼ÓÐÒ»¸öMyModuleÄ£¿éµÄ»°£¬ÄÇÃ´/perl/libÖÐµÄÄ£¿é½«Ê×ÏÈ±»ÕÒµ½²¢Ê¹ÓÃ¡£uselibÓÃ·¨¿ÉÒÔÆðµ½ºÍBEGIN{unshift@INC,$dir}Ò»ÑùµÄÐ§¹û£­Çë²Î¿´&quot;perlman:lib:lib&quot;:http://www.perlmonks.org/?node=perlman:lib:lib.*useFoo::BarÒâÎ¶×ÅÊ²Ã´*useFoo::Bar²¢²»ÒâÎ¶×ÅÔÚ@INCµÄÄ¿Â¼ÖÐÑ°ÕÒÒ»¸ö½Ð×öFoo::Bar.pmµÄÄ£¿éÎÄ¼þ¡£ËüµÄÒâË¼ÊÇÔÚ@INCµÄÄ¿Â¼ÖÐÑ°ÕÒÒ»¸ö½Ð×ö¡®Foo¡¯µÄ¡°×ÓÄ¿Â¼¡±£¬È»ºóÔÚÆäÖÐÕÒÒ»¸ö½Ð×ö¡°Bar.pm¡±µÄ¡°Ä£¿é¡±¡£ÏÖÔÚ£¬Èç¹ûÎÒÃÇ³É¹¦&quot;use&quot;ÁËÒ»¸öÄ£¿é£¬ÄÇÃ´ÎÒÃÇ¾Í¿ÉÒÔÍ¨¹ýÍêÕûµÄ°üÂ·¾¶Óï·¨&amp;PACKAGE::FUNCTIONÊ¹ÓÃÕâ¸öÄ£¿éÖÐµÄËùÓÐº¯Êý¡£µ±ÎÒÃÇËµ&amp;Foo::Bar::some_funcµÄÊ±ºò£¬ÎÒÃÇÖ¸µÄÊÇ¡°°üµÄÃû×Ö¡±¶ø²»ÊÇÄÇ¸öÔÚuseÖÐÔøÊ¹ÓÃµÄ°üº¬Â·¾¶µÄÎÄ¼þÃû¡£Õâ»áÔÊÐíÄã¿ÉÒÔÔÚÒ»¸öuse¹ýµÄÎÄ¼þÖÐ°üº¬ºÜ¶à°üÃû×Ö¡£Êµ¼ÊÊ¹ÓÃÖÐÕâÐ©Ãû×ÖÍ¨³£ÊÇÏàÍ¬µÄ¡£
usewarnings;
ÄãÓ¦¸Ã´ò¿ªwarningsÀ´¼ì²âÄãµÄÄ£¿é£¬ÒòÎªËü¿ÉÒÔ¼ì²â³öºÜ¶àÏ¸Î¢µÄ´íÎó¡£Äã¿ÉÒÔÍ¨¹ýÔÚ²âÊÔÄ£¿é´úÂëÖÐÌí¼Ó-w²ÎÊýÀ´´ò¿ª¾¯¸æÑ¡Ïî¡£Èç¹ûÄãÔÚÄ£¿éÖÐÌí¼ÓÁËusewarnings£¬ÄÇÃ´ÄãµÄÄ£¿é±ØÐëÒªÇóÔËÐÐÔÚperl5.6ÒÔÉÏ£¬·ñÔò²»Ö§³Ö¡£Èç¹ûÄãÔÚÄ£¿éµÄ¶¥¶ËÌí¼ÓÁË$^W £¬ÄÇÃ´Äã½«»áÔÚÈ«¾Ö·¶Î§ÄÚ´ò¿ª¾¯¸æÑ¡Ïî£­Õâ½«Ó°Ïìµ½ÆäËûÄ£¿é£¬Äã×îºÃÖ»ÔÚÄã×Ô¼ºµÄ³ÌÐòÖÐÕâÃ´Ê¹ÓÃ£¬ÒòÎªÕâÂÔÏÔ°ÔµÀÁËÒ»Ð©¡£ÕâÓÐÒ»¸ö×¨¼ÒÐ´µÄ½Ð×ö&quot;tye&quot;:http://www.perlmonks.org/?node=tyeµÄ´úÂëÀ´²âÊÔ¾¯¸æÑ¡Ïî£¬µ«Ã»ÓÐÖ±½Ó½«Ëü°üº¬½øËû/Ëý×Ô¼ºµÄÄ£¿éÖÐ¡£Ï£ÍûÕâÐ©»á½²Çå³þËüÊÇÔõÑù¹¤×÷µÄ¡£:)tachyon
]]></description>
		</item>
		<item>
			<title>PerlÖ±½ÓÈëÃÅÏê¾¡Ö¸ÄÏ</title>
			<link>http://www.kingmx.com/article.php?id=12298</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[
×î½ü½Óµ½Ò»¸öÈÎÎñÊÇÕâÑùµÄ£¬Ò»Ì¨Solaris·þÎñÆ÷ÉÏÐèÒªÔËÐÐÒ»¸ö½Å±¾£¬Ã¿ÌìÍ³¼ÆMySQLÊý¾Ý¿âÖÐµÄÊý¾Ý²¢Éú³É±¨±í¡£±¾À´ÕâÊÇÒ»¸ö¿ÉÒÔ¾ÍÊÂÂÛÊÂµÄÐ¡ÏîÄ¿£¬µ«ÊÇÎªÁËÒÔºóµÄÁé»îºÍ¿ÉÀ©Õ¹ÐÔ£¬ÎÒÉè¼ÆÁËÒ»¸öÊ¹ÓÃXML×öÍ³¼ÆÄ£°æÅäÖÃµÄ·½°¸¡£ÓÉÓÚÔÚBashÏÂ²»Ì«ºÃÊµÏÖXMLµÄ·ÃÎÊ£¬Òò´ËÎÒ¿¼ÂÇÓÃPerlÀ´ÊµÏÖÕâ¸ö½Å±¾¡£
¡¡¡¡PerlÊÇÒ»¸öÇ¿´óµÄ½Å±¾ÓïÑÔ£¬±¾À´ÊÇÉè¼ÆÓ¦ÓÃÔÚÎÄ±¾´¦Àí·½ÃæµÄ£¬µ«ÊÇºóÀ´·¢Õ¹µÄÔ½À´Ô½Ç¿´ó£¬ÒÑ¾­¿ÉÒÔ´¦ÀíÍøÂç¡¢Í¼ÐÎ¡¢ÏµÍ³¡¢ÎÄ¼þµÈµÈ¸÷¸ö·½ÃæµÄÄÚÈÝ¡£Perl±¾ÉíÄÚÖÃÁË·á¸»µÄ²Ù×÷·ûºÍº¯Êý£¬Íâ²¿Ò²ÓÐ¶àÄê»ýÀÛÏÂÀ´µÄ´óÁ¿Ä£¿é¡£µ«ÊÇ²»ÖªµÀÊ²Ã´Ô­ÒòÔÚ¹úÄÚºÃÏñºÜÉÙÓÐÈËÓÃ¡£¹ØÓÚPerlµÄÀúÊ·ÎÒ¾Í²»¶àËµÁË£¬ÓÐÐËÈ¤¿ÉÒÔÉÏÍø²éÒ»ÏÂ¡£ÓÐÒ»µãÒªËµµÄÊÇ£¬Ä¿Ç°Perl×îÐÂµÄ°æ±¾ÊÇ5.8.6£¬¶øPerl6ËäÈ»ÒÑ¾­Éè¼ÆºÜ¾ÃÁËµ«ÊÇÓÉÓÚ×Ô¾ÙÎÊÌâÄ¿Ç°»¹Ã»ÓÐÒ»¸ö¿ÉÓÃµÄ°æ±¾¡£ÎªÁË½â¾öÕâ¸öÎÊÌâÌ¨ÍåµÄÌÆ×Úºº·¢ÆðµÄPugsÏîÄ¿ÕýÔÚ¿ìËÙµÄÊµÊ©ÖÐ£¬¿ÉÄÜºÜ¿ì¾ÍÄÜÓÐ½á¹ûÁË£¬ÓÐÐËÈ¤µÄÅóÓÑ¿ÉÒÔ¶à¶à¹Ø×¢Ò»ÏÂ£¬Ò²Ðí»¹¿ÉÒÔÎª¿ªÔ´ÊÀ½ç×öµã¹±Ï×¡£
¡¡¡¡ËäÈ»ºÜÔçÒÔÇ°¾ÍÁË½â¹ýPerl£¬µ«ÊÇ´ÓÀ´¾ÍÃ»ÓÐÊµ¼ÊµÄÓÃËü×ö¹ýÏîÄ¿£¬Òò´ËÕâ´ÎµÄÊµÏÖÊÇÒ»¸ö±ßÑ§±ß×öµÄ¹ý³Ì¡£×÷ÎªÒ»¸ö³ÌÐòÔ±£¬Ñ§Ï°Ò»ÖÖÐÂµÄÓïÑÔ×Ü»áÓÐÒ»µã¹ßÐÔË¼Î¬£¬¼ÓÖ®PerlÔÚÓï·¨ÉÏÓëCÓïÑÔ±È½ÏÀàËÆ¡£Òò´ËÎÒÏëÔÚÕâÆ¬ÎÄÕÂÖÐÖ÷ÒªÒÔCÎª±³¾°×öÒ»¸ö±È½Ï¡£ÕâÖÖ±È½Ï²»ÊÇ±È½ÏÓïÑÔÉÏµÄÓÅÁÓ£¬¶øÊÇËµÃ÷Í¬ÑùµÄ¹¦ÄÜÈçºÎÔÚPerlÖÐÊµÏÖÒÔ¼°Ö®¼äµÄÇø±ð¡£ÏÞÓÚÆª·ù£¬¾ßÌåµÄ¼¼ÊõÊµÏÖµÄÏ¸½ÚÎÒ¾Í²»ÔÚÕâÀï¶àËµÁË£¬Äã¿ÉÒÔÔÚÄ©Î²µÄ×ÊÔ´Ò»½ÚÖÐÕÒµ½ºÜ¶àÏà¹ØµÄÎÄÕÂ¡£Èç¹ûÄãÃ»ÓÐ½Ó´¥¹ýPerl£¬ÎÒÏëÄã¿ÉÄÜ¸üÏ£Íû¿´µ½Ñ§Ï°PerlµÄ¹ý³ÌÖÐ¿ÉÄÜ»áÓöµ½µÄÒ»Ð©ÎÊÌâÒÔ¼°½â¾ö·½·¨¡£
¹¤ÓûÉÆÆäÊÂ£¬±ØÏÈÀûÆäÆ÷
¡¡¡¡ÒªÐ´´úÂë£¬Ê×ÏÈÖÁÉÙµÃÓÐÒ»¸ö±à¼­Æ÷¡£PerlÊÇ¿çÆ½Ì¨µÄÒ»ÖÖ½âÊÍÐÍÓïÑÔ£¬¿ÉÒÔÔÚUnix/Linux/Windows/MacµÈÆ½Ì¨ÉÏÔËÐÐ¡£¾ßÌå¶ÔÓ¦Æ½Ì¨ÉÏµÄ±à¼­Æ÷£¬×î¼òµ¥µÄ·½°¸ÊÇUnixÏÂÓÃvi£¬WindowsÏÂÓÃUltraEdit¡£µ±È»Ò²ÓÐÉÌÒµ»¯µÄIDE£¬²»¹ýÎÒ³¢ÊÔÁËÒ»ÏÂ·¢ÏÖ²¢²»ÊÇÄÇÃ´µÄºÃÓÃ£¬Òò´ËÎÒÔÚWindowsÆ½Ì¨ÉÏÒÔUltraEdit×÷Îª±à¼­»·¾³£¬Íê³ÉºóÒÆÖ²µ½SolarisÆ½Ì¨ÉÏ¡£
¡¡¡¡¹ØÓÚ»·¾³µÄ´î½¨£¬ÓÐÕâÑù¼¸¸öÐèÒª×¢ÒâµÄµØ·½£º
¡¡¡¡1¡¢ WindowsÆ½Ì¨ÏÂ¶ÔÓ¦µÄÊÇActivePerl£¬¿ÉÒÔÃâ·ÑÏÂÔØ¡£
¡¡¡¡2¡¢ È¥UEµÄÍøÕ¾ÉÏÏÂÔØPerlµÄAutoCompÎÄ¼þ£¬¿ÉÒÔÊµÏÖ×Ô¶¯Íê³É¹¦ÄÜ¡£
¡¡¡¡3¡¢ ÏÂÔØPerl¶ÔÓ¦µÄÓï·¨¼ÓÁÁµÄTagÎÄ¼þ²¢¼ÓÈëµ½UEÖÐ£¬¿ÉÒÔ¸ü¿éµÄ·¢ÏÖÆ´Ð´´íÎó¡£
¡¡¡¡4¡¢ ÔÚUEÉèÖÃÒ»¸ö¿ì½Ý¹¤¾ß£¬ÃüÁîÐÐÎªC:\Perl\bin\perl.exe &quot;%F&quot;£¨²¶»ñÊä³ö£©£¬¿ÉÒÔÊµÏÖ¿ìËÙÔËÐÐ²¢ÏÔÊ¾½á¹û¡£
¡¡¡¡5¡¢ Èç¹ûÄã²»Ï²»¶UE£¬ÄÇÃ´ÎÒÍÆ¼öSource Insight
ÇÉ¸¾ÄÑÎªÎÞÃ×Ö®´¶ 
¡¡¡¡ÆðÊ¼´ÓÄ³ÖÖ½Ç¶ÈÀ´Ëµ£¬³ÌÐòÔ±ºÍ³ø×ÓÊÇÒ»ÑùµÄ¡£Òª×ö³öÒ»×À´ó²ÍÀ´£¬Ê×ÏÈµÃ¿´¿´ÊÖÉÏÓÐÊ²Ã´Ô­ÁÏ£¬È»ºó²ÅÄÜ×ÁÄ¥Ò»ÏÂÓÃÕâÐ©¶«Î÷ÄÜ×ö³öÊ²Ã´ºÃ³ÔµÄÀ´¡£»òÕßËµÏë×öÊ²Ã´¶«Î÷£¬µÃÏÈ±¸ºÃÁÏ²ÅÐÐ¡£
¡¡¡¡¿´¿´ÎÒÃÇÏÖÔÚ¶¼ÓÐÊ²Ã´£ºÒ»¸ö±à¼­Æ÷£¬Ò»¸öPerlµÄ¿ª·¢»·¾³£¬»¹ÓÐÒ»¸ö´ÏÃ÷µÄÄÔ´ü¡£Õâ¸öÈÎÎñÖÐ£¬ÎÒÒª´¦ÀíÃüÁîÐÐ²ÎÊý¡¢·ÃÎÊMySQLÊý¾Ý¿â(SQL)¡¢¶ÁÐ´XMLµÄÅäÖÃÎÄ¼þÒÔ¼°Êä³öÒ»¸ö¹Ì¶¨¸ñÊ½µÄ±¨±íÎÄ¼þ¡£
¡¡¡¡ºÃÁË£¬È¥²é²é×ÊÁÏ£¬¿´¿´·ÃÎÊÊý¾Ý¿âºÍ¶ÁÐ´XML¶¼ÐèÒªÊ²Ã´¶«Î÷¡£ÕýÈçÍ¬CÓïÑÔ±¾Éí´øÁËºÜ¶à±ê×¼º¯Êý¿âÒ»Ñù£¬Perl±¾ÉíÒ²ÓÐº¯Êý¿â£¬²¢°ÑÕâÐ©º¯Êý¿â³ÆÎªModule£¨Ä£¿é£©¡£²éÁËÒ»ÏÂ×ÊÁÏ£¬·¢ÏÖÒª·ÃÎÊMySQLÊý¾Ý¿âÐèÒªDBIºÍDBD::MySQLÁ½¸öÄ£¿é£¬ÄÇÃ´È¥ÄÄÀïÕÒÕâÐ©Ä£¿éÄØ¡£ÕâÀï¸ø´ó¼Ò½éÉÜÒ»¸öPerlµÄModule¼¯É¢µØ www.cpan.org£¬ÕâÀï°üº¬ÁË°ËÇ§¶à¸öModule£¬¿ÉÒÔ´ÓÕâÀïÏÂÔØµ½¼¸ºõ¸÷ÖÖ¸÷ÑùµÄModule¡£¿ÉÒÔÊÖ¹¤ÏÂÔØºó°²×°£¬Ò²¿ÉÒÔÊ¹ÓÃ¹¤¾ßÀ´×Ô¶¯°²×°¡£ÔÚWindowsÏÂÊÇ¿ÉÒÔÊ¹ÓÃppm½øÐÐ×Ô¶¯°²×°£¬ÀýÈçDBDµÄ°²×°¹ý³ÌÈçÏÂ£º
¡¡¡¡C:\&gt;ppm
¡¡¡¡¡­
¡¡¡¡ppm&gt; search DBI
¡¡¡¡Searching in Active Repositories
¡¡¡¡¡­ Ò»´ó¶ÑÓëDBIÏà¹ØµÄ°üµÄÁÐ±í£¬ÆäÖÐ¾Í°üÀ¨DBIÕâ¸ö°ü
¡¡¡¡ppm&gt;install DBI
¡¡¡¡¡­
¡¡¡¡ppm&gt;install DBD::mysql Èç¹ûÖªµÀÄ£¿éµÄÃû×ÖÒ²¿ÉÒÔÖ±½Ó°²×°
¡¡¡¡¡­
¡¡¡¡ppm&gt;quit
¡¡¡¡Èç´Ë¾Í°²×°Íê³ÉÁË¡£¸½´øËµÒ»ÏÂ£¬LinuxÏÂÃ»ÓÐppm£¬µ«ÊÇÓÐÀàËÆµÄ·½Ê½¡£ÊäÈëÃüÁîÐÐ
¡¡¡¡perl €€MCPAN €€e shell
¡¡¡¡È»ºóinstall DBI; install DBD-mysql£¬ºÍÉÏÃæµÄ²Ù×÷¼¸ºõÊÇÒ»ÑùµÄ¡£
¡¡¡¡ÌáÊ¾£ºÈç¹ûÊÇÔÚlinuxÏÂ°²×°DBD::MysqlÄ£¿é£¬ÐèÒª°ÑmysqlµÄbinÄ¿Â¼°üº¬ÔÚ»·¾³±äÁ¿PATHÖÐ£¬·ñÔò»áÌáÊ¾ÕÒ²»µ½mysql_configÎÄ¼þ¡£mysqlÒ»°ãÊÇ°²×°ÔÚ/usr/local/mysqlÏÂ£¬Òò´Ë¿ÉÒÔÍ¨¹ýÖ´ÐÐÃüÁîÐÐPATH=$PATH:/usr/local/bin/mysql/binÀ´½«´ËÂ·¾¶¼ÓÈëµ½»·¾³±äÁ¿ÖÐ¡£
¡¡¡¡·ÃÎÊXMLÓÐ¼¸ÖÖ°ü¿ÉÒÔÑ¡Ôñ£ºÊ¹ÓÃDOMºÍSimpleÄ£¿é¡£SimpleÄ£¿éÊÇ°ÑXMLÓÃPerlµÄÊý×é·½Ê½±íÊ¾£¬¶øDOMÊÇW3CÎ¬»¤µÄÒ»¸ö»ùÓÚÊ÷µÄXMLÎÄµµ±ê×¼¡£¾ßÌåÓÃÄÄÖÖ¾Í¿´¸öÈËµÄÐèÒªÁË¡£ÎÒÊ¹ÓÃµÄÊÇDOM£¬Òò´ËÒª°²×°XML-DOM°ü£¬·½·¨Í¬ÉÏ¡£
]]></description>
		</item>
		<item>
			<title>ÓÃPerl±àÐ´¶ÁÈ¡POP3ÓÊÏäµÄÓ¦ÓÃ³ÌÐò</title>
			<link>http://www.kingmx.com/article.php?id=12299</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[
±¾ÎÄ½«ÌÖÂÛ¿ª·¢ÈËÔ±ÀûÓÃPerlÌØ¶¨µÄÄÜÁ¦±àÐ´POP3µç×ÓÓÊ¼þÓ¦ÓÃ³ÌÐò¡£
ÏñÎ¢ÈíµÄOutlookºÍMozillaµÄÀ×Äñ£¨Thunderbird£©ÕâÑùµÄµç×ÓÓÊ¼þ¿Í»§¶Ë³ÌÐòÄÜ¹»ÈÃÊÕ·¢µç×ÓÓÊ¼þ±äµÃ¼«Æä¼òµ¥€€€€¾ø´ó¶àÊýÊ±ºò£¬ÄãÐèÒª×öµÄÖ»²»¹ýÊÇµã»÷Ò»ÏÂ¹¤¾ßÌõÉÏµÄ°´Å¥£¬Èí¼þ»áÎªÄãÍê³ÉÓëµç×ÓÓÊ¼þ·þÎñÆ÷½øÐÐÍ¨ÐÅ¡¢ÑéÖ¤ÃÜÂë¡¢ÊÕÈ¡µç×ÓÓÊ¼þµÈ¸´ÔÓµÄ¹¤×÷¡£
µ«ÊÇÔÚÕâÖÖ¾ßÓÐÆÛÆ­ÐÔµÄ¼òµ¥±íÏó±³ºóÈ´Ç£Éæ´óÁ¿µÄÈí¼þ±à³Ì¹¤×÷¡£¶øÇÒ£¬Èç¹ûÄãÊÇÒ»¸öÈí¼þ¿ª·¢ÈËÔ±£¬Äã¿ÉÄÜÓÐÒ»Ìì»á·¢ÏÖÈç¹ûÄÜ¹»°ÑÕâÑùµÄ³ÌÐò·Åµ½×Ô¼ºµÄÓ¦ÓÃ³ÌÐò»áÓÐ¶àºÃ°¡¡£
²»ÓÃµ£ÐÄÄÇÃ´¶à£¬ÒòÎªÈç¹ûÄãÔÚÊ¹ÓÃPerl£¬ÄÇÃ´Äã¾Í¿ÉÒÔÀûÓÃÒ»¸ö½Ð×öNet::POP3µÄÐ¡CPANÄ£¿éÀ´ÊµÏÖÕâÒ»Ô¸Íû£¬Õâ¸öÊ®·ÖÓÐÓÃµÄÄ£¿é»áÎªÄãÍê³É´ó¶àÊý¸´ÔÓµÄ¹¤×÷¡£Õâ¸öÄ£¿éÏòPOP3·þÎñÆ÷µÄ½»»¥²Ù×÷¹«¿ªÒ»¸ö¼òµ¥µ«ÊÇ·Ç³£Ç¿´óµÄAPI£¬Ìá¹©Ò»Ð©Ô¤ÉèµÄ·½·¨À´½øÐÐ·þÎñÆ÷Éí·ÝÑéÖ¤¡¢ÏûÏ¢ÁÐ±íºÍÊÕÈ¡¡¢ÏûÏ¢É¾³ý£¬ÒÔ¼°½áÊø»á»°€€€€¼ò¶øÑÔÖ®£¬ËüÌá¹©ÁËÂú×ãÓÃ»§»ù±¾ÐèÒªµÄÒ»ÇÐ¡£
×¢£ºÁÐ±íAµ½CÀïµÄ´úÂëÎÄ±¾¿ÉÒÔ´Ó¿ÉÏÂÔØµÄZipÎÄ¼þÀï»ñµÃ¡£
±¾ÎÄ½«Í¨¹ýÊ¹ÓÃNet::POP¿ª·¢Ò»¸ö¼òµ¥µÄPOP3µç×ÓÓÊ¼þÓ¦ÓÃ³ÌÐòÀ´Ì½ÌÖËüµÄÒ»Ð©¹¦ÄÜ¡£Ò»¿ªÊ¼ÄãÐèÒªÔÚPerlÌáÊ¾·ûÏÂÔËÐÐÏÂÃæµÄÃüÁîÀ´ÏÂÔØºÍ°²×°Õâ¸öÄ£¿é£¨Èç¹ûÄã»¹Ã»ÓÐµÄ»°£©£º
perl&gt; perl -MCPAN -e &quot;install Net::POP3&quot;
¿ªÊ¼´´½¨ÏÂÃæµÄPerl½Å±¾£¨ÁÐ±íA£©£º
ÁÐ±íA
#!/bin/perl
# import package
use Net::POP3;
# ask user for critical variables
print &quot;Mail host: &quot;;
$host = &lt;STDIN&gt;;
chomp($host);
print &quot;\n&quot;;
print &quot;Mailbox username: &quot;;
$user = &lt;STDIN&gt;;
chomp($user);
print &quot;\n&quot;;
print &quot;Mailbox password: &quot;;
$pass = &lt;STDIN&gt;;
chomp($pass);
# initiate connection
# default timeout = 120 sec
$conn = Net::POP3-&gt;new($host) or die(&quot;ERROR: Unable to connect.\n&quot;);
# login
$numMsg = $conn-&gt;login($user, $pass) or die(&quot;ERROR: Unable to login.\n&quot;);
# display number of messages
if ($numMsg &gt; 0) {
&nbsp;&nbsp;&nbsp; print &quot;Mailbox has $numMsg message(s).\n&quot;;
} else {
&nbsp;&nbsp;&nbsp; print &quot;Mailbox is empty.\n&quot;;
}
# close connection
$conn-&gt;quit();
Õâ¸ö´úÂë¶Î»áÒªÇóÓÃ»§ÊäÈëÈý¸öÄÚÈÝ£ºµç×ÓÓÊ¼þ·þÎñÆ÷µÄÖ÷»úÃû¡¢POP3ÓÃ»§ÃûºÍÏàÓ¦µÄÃÜÂë¡£Ò»µ©ÊäÈëÁËÕâÈýÏîÄÚÈÝ£¬Ò»¸öÐÂµÄNet::POP3¶ÔÏó¾Í»á±»´´½¨£¬¶ø¶ÔÏóµÄlogin()·½·¨»á±»ÓÃÀ´´ò¿ªÒ»¸öµ½Ö÷»úµÄÁ¬½Ó£¬²¢ÑéÖ¤ËùÌá¹©µÄÆ¾¾Ý¡£Èç¹ûÌá¹©µÄÆ¾¾Ý±»·þÎñÆ÷ÈÏ¿É£¬ÄÇÃ´login()·½·¨¾Í»á·µ»ØÓÊÏäÀïµÄÏûÏ¢ÊýÁ¿£¨»òÕß·µ»Ø0£¬Èç¹ûÃ»ÓÐÏûÏ¢µÄ»°£©¡£
ÏÂÃæ¾ÍÊÇËüµÄÒ»¸öÊµ¼ÊÀý×Ó£º
Mail host: pop.mailbox.com
Mailbox username: jane
Mailbox password: secret
Mailbox has 77 message(s).
µ±È»£¬½ö½öÖªµÀÏûÏ¢µÄÊýÁ¿ÊÇÔ¶Ô¶²»¹»µÄ€€€€Äã¿Ï¶¨Ï£ÍûÖªµÀÕâÐ©ÏûÏ¢µÄÄÚÈÝ¡£Í¨¹ýNet::POP3µÄtop()·½·¨¾ÍÄÜ¹»´ïµ½Õâ¸öÄ¿µÄ£¬Ëü»áÉ¨ÃèÏûÏ¢µÄÇ°XÐÐ£¬²¢·µ»ØÒ»¸öÖ¸Ïòº¬ÓÐÒÑÊÕÈ¡Êý¾ÝµÄÊý×éµÄ²Î¿¼¡£ÏÂÃæ¾ÍÊÇÒ»¸öÀý×Ó£¬£¨ÁÐ±íB£©»áÈ¡»ØÓÊÏäÀïËùÓÐÏûÏ¢µÄÇ°20ÐÐ£º
ÁÐ±íB
#!/bin/perl
# import package
use Net::POP3;
# ask user for critical variables
print &quot;Mail host: &quot;;
$host = &lt;STDIN&gt;;
chomp($host);
print &quot;\n&quot;;
print &quot;Mailbox username: &quot;;
$user = &lt;STDIN&gt;;
chomp($user);
print &quot;\n&quot;;
print &quot;Mailbox password: &quot;;
$pass = &lt;STDIN&gt;;
chomp($pass);
# initiate connection
# default timeout = 120 sec
$conn = Net::POP3-&gt;new($host) or die(&quot;ERROR: Unable to connect.\n&quot;);
# login
$numMsg = $conn-&gt;login($user, $pass) or die(&quot;ERROR: Unable to login.\n&quot;);
# get message numbers
# iterate over list and print first 20 lines of each
if ($numMsg &gt; 0) {
&nbsp;&nbsp;&nbsp; $msgList = $conn-&gt;list(); 
&nbsp;&nbsp;&nbsp; foreach $msg (keys(%$msgList)) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $ref = $conn-&gt;top($msg, 20);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print @$ref;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &quot;\n\n&quot;;
&nbsp;&nbsp;&nbsp; }
} else {
&nbsp;&nbsp;&nbsp; print &quot;Mailbox is empty.\n&quot;;&nbsp;&nbsp;&nbsp; 
}
# close connection
$conn-&gt;quit();
Äã¿ÉÒÔÊ¹ÓÃget()·½·¨¶ø²»ÓÃtop()·½·¨£¬´Ó¶øÊÕÈ¡ÍêÕûµÄÏûÏ¢¡£
Èç¹ûÄãÏ£ÍûµÄ»°£¬Äã¿ÉÒÔÔÚÃüÁîÐÐÍ¨¹ýGetopt::LongÄ£¿é°Ñ·þÎñÆ÷µÄ²ÎÊý´«µÝ¸ø³ÌÐò£¬ÏÂÃæµÄÁÐ±íCÏÔÊ¾ÁËÕâ¸öÄ£¿é£º
ÁÐ±íC
#!/bin/perl
# import packages
use Net::POP3;
use Getopt::Long;
# read command line options
# display usage message in case of error
GetOptions ('h|host=s' =&gt; \$host,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'u|user=s' =&gt; \$user,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'p|pass=s' =&gt; \$pass) or die(&quot;Input error. Try calling me with: -h &lt;host&gt; -u &lt;username&gt; -p &lt;password&gt;&quot;);
# initiate connection
# default timeout = 120 sec
$conn = Net::POP3-&gt;new($host) or die(&quot;ERROR: Unable to connect.\n&quot;);
# login
$numMsg = $conn-&gt;login($user, $pass) or die(&quot;ERROR: Unable to login.\n&quot;);
# get message numbers
# iterate over list and print first 20 lines of each
if ($numMsg &gt; 0) {
&nbsp;&nbsp;&nbsp; $msgList = $conn-&gt;list(); 
&nbsp;&nbsp;&nbsp; foreach $msg (keys(%$msgList)) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $ref = $conn-&gt;top($msg, 20);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print @$ref;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &quot;\n\n&quot;;
&nbsp;&nbsp;&nbsp; }
} else {
&nbsp;&nbsp;&nbsp; print &quot;Mailbox is empty.\n&quot;;&nbsp;&nbsp;&nbsp; 
}
# close connection
$conn-&gt;quit();
ÕâÐ©´úÂëÄ£°å»á¸æËßÄãÈçºÎ°ÑNet::POP3¼¯³Éµ½ÐèÒª´¦Àíµç×ÓÓÊ¼þµÄÓ¦ÓÃ³ÌÐòÀï¡£×Ô¼º¶¯ÊÖÊÔÊÔ°É£¬×£Äã±à³ÌÓä¿ì£¡
]]></description>
		</item>
		<item>
			<title>ÎÒ¶Ô Catalyst µÄÀí½âºÍ½éÉÜ</title>
			<link>http://www.kingmx.com/article.php?id=12300</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[×òÍí¸ú joe jiang, Qiang ºÍ cnhackTNT ÌÖÂÛÁËÏÂ³ÉÁ¢ Catalyst Ñ§Ï°Ð¡×éµÄÊÂ¡£Qiang »¹½¨ÁË¸ö Livejournal µÄ journal. ´òËã°Ñ´ó¼ÒµÄÑ§Ï°¹ý³ÌÖ®ÖÐÑ§µ½µÄ¾­Ñé»ò¾­Àú¹²ÏíÏÂ¡£Èç¹ûÄÜ¶Ô³õÑ§ÕßÓÐËù°ïÖú¾ÍÔÙºÃ²»¹ý¡£
ÒòÎªÎÒÒ²Ëã½Ó´¥ Catalyst ±È½Ï¾ÃÁË£¬ËùÒÔ´òËã½²µã¶ÔËüµÄÀí½â¡£Ò»¼ÒÖ®ÑÔ£¬ÈçÓÐ´íÎóÇëÅúÆÀÖ¸Õý¡£ÐËÖ®ËùÖÂ¶ø½²£¬Èç²»Á¬¹áÒ²¼ûÁÂ¡£ 
Catalyst ÊÇ¶Ô×î½üÆÄÎªÁ÷ÐÐµÄ MVC Ä£ÐÍ»òÕßËµÊÇ Ruby on rails ÔÚ Perl ÉÏµÄÊµÏÖ¡£ÔÚÎÒ¿´À´£¬Perl ÆäÊµ¹¦ÄÜÉ¶¶¼²»È±£¬¾ÍÈ±Ò»×éºÏ¡£¶ø Catalyst ¾ÍÊÇÒ»¸ö¿ìËÙ Web ¿ª·¢µÄÆ¯ÁÁ×éºÏÈ­¡£ 
M - Model, Ò»°ãÓÃÀ´½«Êý¾Ý¿â¶ÔÏó»¯£¬ÕâÑùÄÜ±È½ÏÈÝÒ×·ÃÎÊºÍ²Ù×÷¡£Perl ÖÐ×îÓÐÃûµÄ¾ÍÊÇ Class::DBI
V - View, ¾ÍÊÇÊÓÍ¼£¬ÓÃÀ´´¦Àí½çÃæÏÔÊ¾¡£Perl ÖÐ±È½ÏÓÐÃûµÄÊÇ Template-Toolkit ºÍ Mason
C - Controller, ¾ÍÊÇ¿ØÖÆÆ÷¡£¾ÍÊÇÕë¶Ô²»Í¬µÄ action »ò request, À´Ö´ÐÐ²»Í¬µÄ´úÂë¡£ÁíÍâÓÐ¸öÃû´Ê¾ÍÊÇ·Ö·¢/Dispatch 
Catalyst ÖÐ¿ÉÒÔÊ¹ÓÃºÜ¶à²»Í¬µÄ Model ºÍ View/Template. ¿´¸öÈËÏ²ºÃ¶ø¶¨£¬ÎÒÒ»°ãÆ«ÏòÓÚÊ¹ÓÃ×îÁ÷ÐÐµÄ CDBI ºÍ TT.
Class::DBI ºÍ TT ±¾À´ÔÚ Perl ÊÀ½çÖÐ¾ÍºÜ³öÃû¡£¶ø°´Ò»°ãÂß¼­Ë¼Î¬£¬ÊÓÍ¼ÓëÄ£ÐÍ¸ã¶¨ºó¾ÍÊ£ÏÂÊÂ¼þ´¦ÀíÁË¡£Catalyst ÎÞ·ìµØÕûºÏÁËÕâÁ½Õß£¬¶øÊÂ¼þ´¦Àí/Controller ÔòÈÃÎÒÔÞ²»¾ø¿Ú¡£ 
Ê×ÏÈ´ÓÄ¿Â¼½á¹¹ÉÏÀ´Ëµ£¨ÔËÐÐ catalyst MyApp£©£¬ÂÔ¹ýÄ³Ð©¶«Î÷£º
created &quot;MyApp&quot; # ÕûÒ»Ä¿Â¼
created &quot;MyApp/lib&quot;
created &quot;MyApp/root&quot; # ¿ÉÒÔ½«Ò»Ð©¾²Ì¬ÎÄ¼þ·ÅÔÚÕâÈç CSS/Gif/JS etc.
created &quot;MyApp/lib/MyApp&quot;
created &quot;MyApp/lib/MyApp/M&quot; # ÕâÀï¾ÍÊÇ·ÅÖÃ Model 
created &quot;MyApp/lib/MyApp/V&quot; # Ò»°ãÒ²¾ÍÒ»¸öÎÄ¼þ TT.pm
created &quot;MyApp/lib/MyApp/C&quot; # ÕâÀï±È½ÏÖØÒª£¬ËùÓÐµÄ Controller ¶¼·ÅÕâ
created &quot;MyApp/lib/MyApp.pm&quot; # Ö÷³ÌÐòÄ£¿é
created &quot;MyApp/Build.PL&quot; # ¿ÉÒÔÓÃÀ´´ò°ü·¢²¼Ä£¿é
created &quot;MyApp/script&quot; # ½Å±¾Ä¿Â¼
created &quot;MyApp/script/myapp_cgi.pl&quot; # ÆÕÍ¨ CGI »·¾³ÏÂÔËÐÐ
created &quot;MyApp/script/myapp_fastcgi.pl&quot; # FastCGI
created &quot;MyApp/script/myapp_server.pl&quot; # Õâ¸ö¾ÍÊÇÎÒÃÇÒ»°ãÐ´´úÂëÒªÔËÐÐµÄ½Å±¾
created &quot;MyApp/script/myapp_test.pl&quot;
created &quot;MyApp/script/myapp_create.pl&quot; # Õâ¸öÓÃÀ´´´½¨ÐÂµÄ C/M/V Ä£¿é
¶Ô Controller À´½²£¬Catalyst ÊµÐÐ URL-to-Action.
ÔÚ·þÎñÆ÷ÔËÐÐÊ±Ëü½«¼ì²é MyApp.pm ºÍ /M /V /C ÕâÈýÄ¿Â¼ÏÂµÄËùÓÐÄ£¿éÎÄ¼þ¡£¶ÔÓÚ /C Ä¿Â¼ÏÂÄ£¿éÎÄ¼þÖÐÊµÐÐ URL-Action Æ¥Åä¡£±ÈÈçÎÒÃÇÔÚ /C ÏÂÓÐÒ»ÐÂÎÄ¼þ List.pm £¨ÓÃ perl script/myapp_create.pl controller List ´´½¨£©¡£List.pm ÖÐÈç¹ûÕâÃ´Ð´£º
sub list : Global { # Õâ¸ö Action ×Ô¶¯¶ÔÓ¦ÀàÈç http://fayland:3000/list ÕâÑùµÄ URL
sub view : Regexp('^tag/(.*)') { # Õâ¸ö¶ÔÓ¦ÀàÈç http://fayland:3000/tag/Catalyst ÕâÑùµÄ URL
sub orderby : Local { # Õâ¸ö¶ÔÓ¦ http://fayland:3000/list/orderby ÕâÑùµÄ URL
                        Óë Global ²»Í¬µÄÊÇËüÔÚ URL ÖÐ¶àÁË¸öÄ£¿éÃû
»¹ÓÐÆäËûºó×º¡£ÕâÊÇ¸ö·Ç³£°ôµÄ¶«Î÷¡£ÕâÑùÄã¾Í²»ÓÃÔÚÒ»¸öÎÄ¼þÖÐÐ´ÄÄ¸öÄ£¿é¶ÔÓ¦ÄÄ¸ö×Ó³ÌÐòÁË£¨ÒÔÇ°ÒªÓÃÀàÈç CGI::Application Íê³ÉÕâ¹¦ÄÜ£©¡£ºÜ·½±ã¡£ 
Ò»°ã¶øÑÔ£¬°Ñ¼òµ¥µÄ /V ºÍ /M ¸ãÍêºó£¨ÕæµÄºÜ¼òµ¥£¬ÀïÃæÒ»°ãÒ»¸öÎÄ¼þÊ®ÐÐ´úÂë¾Í¿ÉÒÔ£©£¬Ê£ÏÂÀ´µÄ¾ÍÊÇ Controller µÄ±àÐ´ÁË¡£
Controller Ò»°ã×Ó³ÌÐòµÄµÚÒ»ÐÐÊÇ my ( $self, $c ) = @_;
ÕâÀï¾ÍÊÇÒý½øÁËÒ»¸ö×îÖØÒªµÄ $c, ÆäÊµÄã²»±ØÀí»áËüÊÇÊ²Ã´¶«Î÷£¨ÆäÊµÊÇÄ£¿éµÄÒ»¸öÊµÀý£©£¬Ö»ÐèÒªÖªµÀÏîÄ¿ÀïµÄËùÓÐ¶«Î÷Äã¶¼¿ÉÒÔ´ÓÕâµÃµ½¡£ÐèÒªÊ²Ã´£¬ÕÒËü¾ÍÊÇ¡£ËüÓÖ·ÖÎªºÜ¶à²¿¼þ£¬°üÀ¨ request, response, stash, config, forward µÈ¡£ 
request °üº¬ÄãÇëÇó£¨ä¯ÀÀÆ÷¶Ô·þÎñÆ÷µÄÇëÇó£©Ê±µÄËùÓÐÐÅÏ¢¡£Èç cookies, ²ÎÊý/params ºÍÆäËûÍ·/header ÐÅÏ¢¡£¿ÉÒÔÍ¨¹ý my $value = $c-&gt;req-&gt;params-&gt;{'foo'}; µ±Äã·ÃÎÊ http://fayland:3000/?foo=bar Ê±£¬ $value ¾ÍÊÇ bar ÁË¡£ 
response ¾ÍÊÇ·þÎñÆ÷¶Ôä¯ÀÀÆ÷µÄ·´À¡¡£Äã¶Ôä¯ÀÀÆ÷µÄÊä³öµÈ¾ÍÊÇ¿¿Õâ¸ö²¿¼þÀ´½â¾ö¡£$c-&gt;res-&gt;output('Congratulations, NewApp is on Catalyst!'); Ò»°ãºÜÉÙÓÃ output, ÒòÎªÊä³öÒ»°ãÓÃ Template ½â¾ö¡£ 
config Ò»°ã´æ´¢ÏîÄ¿µÄÅäÖÃÎÄ¼þ¡£ÎÒÒ»°ãÓÃ YAML À´ÅäÖÃ£¬È»ºóÍ¨¹ý YAML::LoadFile À´µ¼Èë¸ÃÅäÖÃÎÄ¼þ 
forward Õâ¸öÊÇºÜÓÐÓÃµÄ¶«Î÷¡£Ò»°ãÓÃÀ´ÊµÏÖÔÚ×Ó³ÌÐò¼äµÄÌø×ª¡£ 
stash ËùÓÐ×Ó³ÌÐò´«µÝµ½ TT Ä£¿éÖÐµÄ±äÁ¿¶¼ÊÇÓÃÕâ¸ö±äÁ¿À´´«µÝ¡££¨ÓÃ¹ý TT µÄÈË¶¼Ó¦¸ÃÖªµÀµÄ£© 
´úÂëÆ¬¶Ï
package Eplanet::C::Add;
use base 'Catalyst::Base';
sub add : Global {
 &nbsp; &nbsp;my ( $self, $c ) = @_;
 &nbsp; &nbsp;$c-&gt;stash-&gt;{cates} = [ Eplanet::M::CDBI::Category-&gt;retrieve_all ];
}
Eplanet::M::CDBI::Category Õâ¾ÍÊÇ¶ÔÏó»¯ºóµÄÊý¾Ý¿â¡£retrieve_all ÊÇ CDBI µÄÒ»¸öº¯Êý¡£¾ÍÊÇ»ñµÃËùÓÐÊý¾Ý¡£È»ºó½«Æä·Åµ½ $c-&gt;stash-&gt;{cates} Àï£¬ÕâÑùÄ£¿éÎÄ¼þ¾ÍÄÜ·ÃÎÊÕâÊý¾ÝÁË¡£
# add.tt Ä£°æÎÄ¼þ
&lt;select name=&quot;cms_cat_id&quot;&gt;
[% FOREACH cate IN cates -%]
&lt;option value=&quot;[% cate.cat_id %]&quot;&gt;[% cate.cat_name %]
[% END -%]
&lt;/select&gt;
ÕâÑù¾ÍÊÇÒ»¸ö×î»ù±¾µÄÍêÕûµÄ¹ý³Ì¡£http://fayland:3000/add ÊµÏÖ URL-Action, Eplanet::M::CDBI::Category ÊÇÊý¾Ý¿â£¬È»ºóÍ¨¹ý $c-&gt;stash ´«µÝµ½Ä£°æÀï¡£Ò»°ãµÄÁ÷³Ì¾ÍÊÇÕâÑù¡£ 
Ñ§Ï°Á÷³ÌÒ»°ãÕâÑù£º 
* ¿´ Catalyst::Manual::Intro
* svn co http://dev.catalyst.perl.org/repos/Catalyst/trunk Àï¿´ÄÇÎÄ¼þ¼ÐÀïµÄ examples
* ¶©ÔÄ http://lists.rawmode.org/mailman/listinfo/catalyst
* Ð´´úÂë£¬×öÊÔÑé£¬ÎÊÎÊÌâ 
Enjoy Catalyst.
]]></description>
		</item>
		<item>
			<title>Template Toolkit ÈëÃÅ</title>
			<link>http://www.kingmx.com/article.php?id=12301</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[PRE/POST_CHOMPÎÒÔÚ Template Toolkit µÄÅäÖÃÑ¡Ïî Ð´¹ý¿ÉÒÔÉèÖÃ POST_CHOMP ºÍ PRE_CHOMP Îª 1 À´È¥µô TT ´úÂëËù´øÀ´µÄÇ°ºó¿ÕÐÐ¡£²»¹ýÈç¹ûÄã²»ÏëÉèÖÃÕâ¸öµÄ»°Ò²ÊÇ¿ÉÒÔÈ¥µôÇ°ºó¿ÕÐÐµÄ¡£±ÈÈçÕâÑù£º
Hello [% a = 3 %]
World [% a %]
Õâ¸öÊä³öµÄ»°Îª¡°Hello /nWorld 3/n¡±¡£¶øÕâÃ´Ð´¿ÉÒÔ°ÑÀïÃæµÄ /n È¥µô£º
Hello [% a = 3 -%]
World [% a -%]
Êä³öÎª¡°Hello World 3¡±¡£Õâ¸öÔÚ http://www.stonehenge.com/merlyn/LinuxMag/col60.html ÀïÌáµ½¹ý¡£ ºÏ²¢Á½¸ö TT ´úÂë
[% user.name %][% END %]
¿ÉÒÔÐ´³É
[% user.name; END %]
INSERT ºÍ INCLUDE µÄÇø±ðINSERT Ö»ÊÇ²åÈëÎÄ¼þµÄÄÚÈÝ¶ø²»¹ÜÄãÊÇ²»ÊÇÁíÒ»¸ö .tt ÎÄ¼þ¡£¶ø INCLUDE µÄ»°Èç¹ûÊÇÁíÒ»¸ö .tt ÎÄ¼þµÄ»°»áÖ´ÐÐËü¡£
±ÈÈçÄãÓÐÒ»¸öÎÄ¼þ½Ð footer.tt, ÄÚÈÝÎª£º
Copyright 2004-2005 All Rights Reserved. Powered by &lt;a href=&quot;Eplanet.html&quot;&gt;Eplanet&lt;/a&gt; &amp;&amp; &lt;a href='http://catalyst.perl.org'&gt;Catalyst&lt;/a&gt; [% CatalystVersion %].
µ±ÔÚÁíÒ»¸öÎÄ¼þÖÐµ÷ÓÃ [% INSERT footer.tt %] Ê±Êä³öµÄ½á¹û¸úÉÏÃæµÄ»áÒ»Ñù¡£ÀïÃæµÄ [% CatalystVersion %] ÊÇÔ­·â²»¶¯¡£¶øÈç¹ûÊÇÓÃ [% INCLUDE footer.tt %] µÄ»°ÀïÃæµÄ [% CatalystVersion %] »á±»Ö´ÐÐÎªÕâ¸ö±äÁ¿µÄÖµ¡£ BLOCK±ÈÈçÄãÓÐ¶Î´úÂëÒªÖ´ÐÐÁ½´Î¡£±ÈÈçÎÒÓÐÒ»¸öµ¼º½À¸£¬ÐèÒªÉÏÃæ·ÅÒ»¸öÏÂÃæ·ÅÒ»¸ö¡£ÄÇÎÒ¿ÉÒÔÕâÃ´Ð´£º
[% show_guidebar = BLOCK %]
&lt;p&gt;
[% IF prev_topic %]&lt;&lt;Previous: &lt;a href=&quot;[% prev_topic.cms_file %].html&quot;&gt;[% prev_topic.cms_title %]&lt;/a&gt;[% END %]
[% IF prev_topic and next_topic %]  [% END %]
[% IF next_topic %]&gt;&gt;Next: &lt;a href=&quot;[% next_topic.cms_file %].html&quot;&gt;[% next_topic.cms_title %]&lt;/a&gt;[% END %]
&lt;/p&gt;
[% END %]
[% show_guidebar %]
...
[% show_guidebar %]
×¢ÊÍ×¢ÊÍºÜ¼òµ¥£¬ÔÚ [% ºó¼ÓÉÏ # ÄÇÕâÒ»ÐÐ¾Í±»×¢ÊÍµôÁË¡£Î¨Ò»ÖµµÃ×¢ÒâµÄÊÇÏÂÃæÕâÁ½ÖÖÊÇ²»Ò»ÑùµÄ£º
[%# a = 77
   b = 88
%]
a: [% a %] b: [% b %]
Êä³ö a: b:
¶ø[% ºÍ # ÖÐ¼ä¿ÕÁËÒ»¸ñºó¾ÍÖ»ÓÐ×¢ÊÍÒ»ÐÐ¶ø²»ÊÇÕû¸ö [% %], Èç£º
[% # a = 77
   b = 88
%]
a: [% a %] b: [% b %]
Êä³ö a: b: 88 ²Î¿¼
Introduction to Template Toolkit (part 1) 
Introduction to Template Toolkit (part 2) 
Introduction to Template Toolkit (part 3)
]]></description>
		</item>
		<item>
			<title>Win32 ÏÂ Apache ºÍ #!/usr/bin/perl</title>
			<link>http://www.kingmx.com/article.php?id=12302</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[ÎÒÒ»ÏòÏ²»¶Ð´ 
#!/usr/bin/perl
ÕâÃ´Ð´µÄºÜ´ó²¿·ÖÔ­ÒòÊÇÎªÁË¼æÈÝ Linux(Unix). 
µ«ÊÇ¼ÙÉèÄãµÄ Perl Ä¿Â¼Îª C:/usr/bin, ¶ø Apache Ä¿Â¼Îª D:/Apache2. ÄÇÄãËùÓÐµÄ³ÌÐòÍ·Ò»ÐÐ±ØÐëÊÇ 

#!C:/usr/bin/perl.exe 
#!usr/bin/perl 
#!perl 
ÕâÈýÖÖÖÐµÄÒ»ÖÖ¡£ÆäÖÐµÚ 3 ÖÖ»¹±ØÐëµÃ°Ñ C:/usr/bin ¼Ó¸ö Path ÖÐ¡£
Èç¹ûÄã²»ÕâÃ´×ö£¬µ±Äã·ÃÎÊÀàÈç http://localhost/cgi-bin/printenv.pl£¨´Ë³ÌÐòÒÔ#!/usr/bin/perl¿ªÍ·Ê±£© Ê±¾Í»á±¨´í£º 
No such file or directory: couldn't spawn child process: D:/Apache2/cgi-bin/printenv.pl
½â¾öÕâ¸öÎÊÌâµÄ·½·¨²»ÊÇÐÞ¸Ä httpd.conf »òÕß×¢²á±íÊ²Ã´µÄ¡£ÄãÒªÃ´¶¼ÓÃ #!C:/usr/bin/perl.exe ¿ªÍ·£¬ÒªÃ´½« Apache ºÍ Perl °²×°µ½Ò»¸öÄ¿Â¼ÖÐ£¨¶¼ÔÚ C: »òÕß¶¼ÔÚ D:£© 
½ñÌìÖØ×° Apache Ê±·¢ÏÖ´ËÎÊÌâ¡£°´ÕÕËÑË÷À´µÄÐÞ¸Ä httpd.conf ºÍ×¢²á±í»òÎÄ¼þ¶ÔÓ¦¶¼Ã»ÓÃ£¬ºóÀ´»ð´óÔÙÖØ×°»Ø C:/Apache2 Ê±ÎÞÒâÖÐ½â¾ö¡£Ï£ÍûÄÜÓÐËù°ïÖú¡£ÎÒµÄÅäÖÃÎª£º 
Perl 5.8.6 and Apache 2.0.52, together with mod_perl-1.99_20, mod_ssl / OpenSSL (0.9.7e), and php-4.3.10
]]></description>
		</item>
		<item>
			<title>ÈçºÎ´´½¨ Atom</title>
			<link>http://www.kingmx.com/article.php?id=12303</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[¼ò½é
Atom µÄ×÷ÓÃÇë×ÔÐÐËÑË÷¡£
ÃèÊö
ÕâÀïÎÒÊ¹ÓÃ XML::Atom::SimpleFeed À´´´½¨ Atom 
XML::Atom::SimpleFeed ÓÐÐ©Ðíè¦´Ã£¬Èç²»ÄÜÉèÖÃ±àÂëºÍ¶àÁË¸öÄ¬ÈÏµÄ xml:lang=&quot;en&quot; 
ÎÒÂÔÎ¢ÐÞ¸ÄÁËÏÂÊ¹Ö®·ûºÏÎÒµÄÒªÇó¡£ 

É¾³ýÁ½´¦ xml:lang=&quot;en&quot; 
¸Ä encoding=&quot;iso-8859-1&quot; Îª encoding=&quot;UTF-8&quot; 
´úÂë
ÈçÏÂ´úÂëÀ´×ÔÎÒ»ùÓÚ Catalyst µÄ Eplanet
use lib &quot;E:/t/Eplanet/hackedlib&quot;; # add the hack file's addressuse XML::Atom::SimpleFeed;my $Atom_file = $c-&gt;config-&gt;{build_root} . &quot;/atom.xml&quot;;my $title = 'Fayland/'s';my $link = 'http://www.fayland.org/';my $description = 'What Fayland says';	my $atom = XML::Atom::SimpleFeed-&gt;new(	title    =&gt; $title,	link     =&gt; $link,	tagline  =&gt; $description,	author =&gt; { name =&gt; 'Fayland Lam' },)or die;my @cats = Eplanet::M::CDBI::Cms-&gt;retrieve_from_sql(qq{	1=1 ORDER BY cms_id DESC LIMIT 0, 20});foreach my $cat (@cats) {	my $_title = $cat-&gt;get('cms_title');	my $_link = &quot;http://www.fayland.org/journal/$cat-&gt;{'cms_file'}.html&quot;;	my $_description = $cat-&gt;{'cms_describe'};	my $_create_data = $cat-&gt;{'cms_cre_data'};	# convert to the standard w3cdtf	$_create_data = date2w3cdtf($_create_data);	# got the modified data	my $_modified_data = $cat-&gt;{'cms_mod_data'};	# if not exists, use create data instead	if ($_modified_data) {	$_modified_data = date2w3cdtf($_modified_data);	} else {	$_modified_data = $_create_data;	}	$atom-&gt;add_entry(	title    =&gt; $_title,	link     =&gt; $_link,	author   =&gt; { name =&gt; &quot;Fayland Lam&quot; },	issued   =&gt; $_create_data,	created  =&gt; $_create_data,	modified =&gt; $_modified_data,	content  =&gt; $_description,	)	or die;}$atom-&gt;save_file($Atom_file);sub date2w3cdtf {	my $data = shift;	# the original data foramt like 2005-03-29 23:02:14 &amp; it's a localtime	# so we convert localtime to $time and got the gmtime	my ($year, $mon, $mday, $hour, $min, $sec) = ($data =~ /^(/d+)-(/d+)-(/d+)/s(/d+):(/d+):(/d+)$/);	$mon--;	use Time::Local;	my $time = timelocal($sec,$min,$hour,$mday,$mon,$year);	( $sec, $min, $hour, $mday, $mon, $year) = gmtime($time);	$year += 1900; $mon++;	# at last we return the w3c dtf	my $timestring = sprintf( &quot;%4d-%02d-%02dT%02d:%02d:%02dZ&quot;,        $year, $mon, $mday, $hour, $min, $sec ); 	return ($timestring);}
]]></description>
		</item>
		<item>
			<title>´ÓÏ¸½Ú´¦ÌáÉýPerlÐÔÄÜ</title>
			<link>http://www.kingmx.com/article.php?id=12304</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[DescriptionÏÂÃæËùÐ´µÄ¸÷µã¶¼ÊÇÎÒ´ÓÆäËûµØ·½ÕÒ¹ýÀ´ÁË¡£ÕûÀíÒ»ÏÂÏ£Íû¶Ô¸÷Î»ÓÐËù°ïÖú¡£
Details±äÁ¿ºÍ³£Á¿1, ¾¡Á¿¼õÉÙÊýÑ§±í´ïÊ½µÄ¼ÆËã£¬Èç 
$day = 24*60*60; # ²»ºÃ$day = 86400; # better
2, Ê¹ÓÃvecº¯Êý¶ø²»ÊÇ±äÁ¿À´´æ·Å·Ç³£Ð¡µÄÊý×Ö¡£ print1, Èç¹ûÊä³öÀïÃ»ÓÐ±äÁ¿ÐèÒªÄÚ²å£¬Ê¹ÓÃµ¥ÒýºÅ'¶ø²»ÊÇË«ÒýºÅ&quot;.ÒòÎªË«ÒýºÅ»áÇ¿ÖÆ Perl ¼ì²é¿ÉÄÜ²åÈëµÄÐÅÏ¢
2, ¶à¶ÎÊä³öÊ±ÓÃ,¶ø²»ÊÇ.¡£ÒòÎªÁ¬½Ó²Ù×÷·û.»áÊ×ÏÈ½«×Ö·û´®Á¬½ÓÔÚÒ»Æð£¬È»ºó½«Æä×÷ÎªÒ»¸ö²ÎÊý´òÓ¡
±ÜÃâÃ»±ØÒªµÄÒýºÅÕª×Ô FAQ 3.16: How can I make my Perl program take less memory?
Ã»ÓÐ¾ø¶Ô±ØÒª²»ÒªÊ¹ÓÃÒýºÅ£º 
my $copy = &quot;$large_string&quot;;
ÉÏÊö»á$large_string×öÁ½´Î¿½±´£¨Ò»ÊÇ¿½±´µ½ $copy ÁíÒ»´ÎÊÇÒýºÅÄÚ²å£©£¬·´Ö® 
my $copy = $large_string;
Ö»×öÒ»´Î¿½±´¡£ 
Êý×é×Ö·û´®»¯Í¬ÑùÕª×Ô FAQ 3.16
¶ÔÓÚ´óÊý×é×Ö·û´®»¯£º 
{    local $, = &quot;/n&quot;;    print @big_array;}
±ÈÏÂÃæÁ½Ñù¶¼¸ü½ÚÊ¡ÄÚ´æ 
print join &quot;/n&quot;, @big_array;#or{    local $&quot; = &quot;/n&quot;;    print &quot;@big_array&quot;;}
ÒýÓÃ/Èç¹ûÊ¹ÓÃ´óÐÍÊý×é»ò hash ±í£¬²¢Ê¹ÓÃËüÃÇ×÷Îªº¯ÊýµÄ²ÎÊý£¬ÄÇÃ´Ó¦¸ÃÊ¹ÓÃËüÃÇµÄÒ»¸öÒýÓÃ£¬¶ø²»Ó¦¸ÃÖ±½ÓÊ¹ÓÃËüÃÇ¡£Í¨¹ýÊ¹ÓÃÒýÓÃ£¬¿ÉÒÔ¸æËßº¯ÊýÖ¸ÏòÐÅÏ¢µÄÖ¸Õë¡£Èç¹û²»Ê¹ÓÃÒýÓÃ£¬¾ÍÐèÒª½«Õû¸öÊý×é»ò hash ±í¸´ÖÆµ½¸Ãº¯ÊýµÄµ÷ÓÃÕ»ÖÐ£¬È»ºóÔÚº¯ÊýÖÐÔÙ´Î¶ÔÆä½øÐÐ¸´ÖÆ¡£ÒýÓÃ»¹¿ÉÒÔ½ÚÊ¡ÄÚ´æ£¨Õâ¿ÉÒÔ¼õÉÙ×ã¼£ºÍ¹ÜÀíµÄ¸ºÔØ£©£¬²¢¼ò»¯ÄúµÄ±à³Ì¡£ Ñ­»·¾¡ÔçÔÚÑ­»·ÄÚ·ÅÖÃÌõ¼þÓï¾ä£¬ÒÔÊ¹Perl²»Ö´ÐÐÎÞÓÃµÄÓï¾ä¡£Èç 
while () {    chomp;    next if /^#/;
next¿ÉÒÔ·ÅÔÚchompÉÏÃæ¡£ ÓÐÑ¡ÔñÐÔµØÊ¹ÓÃ map ºÍ grepÕª×Ô FAQ 3.16: How can I make my Perl program take less memory?
ÒòÎª map ºÍ grep ÊÇÊ¹ÓÃ LIST ÁÐ±í²ÎÊý£¬ËùÒÔÕâÃ´×ö 
@wanted = grep {/pattern]]></description>
		</item>
		<item>
			<title>ÔÚ Win32 ÏÂ°²×° Bugzilla</title>
			<link>http://www.kingmx.com/article.php?id=12305</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[Bugzilla ÊÇÓÉ Perl ±àÐ´µÄ bug tracing ÏµÍ³¡£
ÎÒÒ»Ïò¶Ô´óÐÍ Perl Script ·Ç³£×ÅÃÔ£¬ÈÏÎª¶Á¶®ËüÃÇ»áÈÃÈËÊÜÒæ·ËÇ³¡£ËùÒÔÏÂÁËº®¼Ù³öµÄ°æ±¾ÊÔ×Å°²×°ÁËÏÂ¡£
sf.net ÄÇÓÐ Bugzilla µÄºº»¯°æ£¬ÒòÎªÎÒÖ»ÊÇÏë¿´Ô´´úÂëËùÒÔ¾ÍÏÂÁËÔ­°æ¡£
Env: Win2000(SP4)+Apache/2.0.50+Perl/v5.8.4+MySQL/4.1.7Bugzilla version: 2.18
Step by Step
http://www.bugzilla.org/download/ ÏÂÔØ Stable Release. 
½âÑ¹Ëõµ½°²×°Ä¿Â¼£¨ eg, E:/Fayland/bugzilla £©£¬ÔÄ¶Á QUICKSTART 
ÔËÐÐ cmd »òÓÃ phpMyAdmin, À´½¨ÔìÊý¾Ý¿â bugs ºÍÓÃ»§ bugs/bugs 
C:/mysql/bin&gt;mysql -u rootmysql&gt;create database bugs;mysql&gt;GRANT SELECT,INSERT,UPDATE,DELETE,INDEX,ALTER,CREATE,LOCK TABLES,DROP,REFERENCES ON bugs.* TO bugs@localhost IDENTIFIED BY 'bugs';mysql&gt;FLUSH PRIVILEGES;
ÔËÐÐ cmd 
E:/Fayland/bugzilla&gt;perl checksetup.pl

´Ë½Å±¾µÚÒ»¼þÒª×öµÄÊÇ¼ì²éÒÀ´æÄ£¿éÊÇ·ñ´æÔÚ£¬°æ±¾ºÅÊÇ·ñ¹»ÐÂ¡£Èç¹û²»´æÔÚ»ò²»¹»ÐÂ¾ÍÐèÒª°²×°ÐÂµÄ¡£ÏñÎÒ¾Í°²×°ÁË Date::Format, Chart::Base, PatchReader. ÆäÖÐ cpan Date::Format »¹ÌáÊ¾ÕÒ²»µ½£¬Ö»ºÃµ½ http://search.cpan.org ËÑË÷À´°²×°ÁËÏÂ¡£ 
µÚÒ»´ÎÔËÐÐºó°²×°Ä¿Â¼ÏÂ»áÉú³É localconfig ÎÄ¼þ£¬¿ÉÓÃ¼ÇÊÂ±¾´ò¿ª¡£ÎÒÉèÖÃÁËÈçÏÂ¶«Î÷£º 
$db_pass = 'bugs';
ÆäËû¿ÉÒÔ¸ù¾Ý×Ô¼ºÐèÒªÀ´ÉèÖÃ¡£ 
ÔÙÒ»´ÎÔËÐÐchecksetup.pl, ½Å±¾½«¼ì²âÊÇ·ñ¿ÉÒÔÁ¬½ÓÊý¾Ý¿â¡£Èç¹ûÁ¬½Ó³É¹¦½«½¨Á¢Ò»Ð©Êý¾Ý±í£¬²»³É¹¦µÄ»°ÖØÐÂ¸Ä localconfig »òµ÷ÊÔ mysql. 
Êý¾Ý±í½¨Á¢ºó»áÈÃÄãÉèÖÃ admin account, ÊäÈë email ºÍ password, OK. 

perl checksetup.pl ÍêÈ«³É¹¦ºó£¬ÅäÖÆ Apache µÄ httpd.conf 
# bugzillaAlias /bugzilla &quot;E:/Fayland/bugzilla/&quot;&lt;Directory &quot;E:/Fayland/bugzilla/&quot;&gt;	Options +ExecCGI	AllowOverride Limit 	DirectoryIndex index.cgi	AddHandler cgi-script .cgi&lt;/Directory&gt;
´ò¿ª Firefox »ò IE, http://localhost/bugzilla/. ³öÏÖ½çÃæºó£¬Log in, È»ºóÉèÖÃ²ÎÊý/Parameters 
urlbase = http://localhost/bugzilla/cookiepath = /bugzilla/sendmailnow = off....
ÒòÎªÎÒÃ» sendmail, ËùÒÔ°Ñ sendmailnow ÉèÖÃÎª off.
²ÎÊýÉèÖÃµÄ×ó±ß¶¼ÓÐ¸ö Reset, ÊÇ»Ö¸´µ½Ä¬ÈÏÉèÖÃµÄÒâË¼¡£ 
]]></description>
		</item>
		<item>
			<title>¿ìËÙ¿ªÊ¼Perl XML£º½Ó¿ÚÆª</title>
			<link>http://www.kingmx.com/article.php?id=12306</link>
			<pubDate>2006-10-21</pubDate>
			<description><![CDATA[ÈëÃÅ¼ò½é×î½üÔÚPerl-XMLÓÊ¼þ×é¾­³£ÎÊÆðµÄÎÊÌâÊÇÈçºÎ¸ø²»ÊìÏ¤µÄÓÃ»§Ò»¸ö¶Ô´óÁ¿ Perl XML Ä£¿éµÄ¿ìËÙÖ¸ÒýÐÔ¸ÅÊöÎÄµµ¡£ÔÚ½ÓÏÂÀ´µÄ¼¸¸öÔÂÀïÎÒ½«µ¥¶À¶Ô´ËÎÊÌâÐ´¼¸Æª×¨À¸ÎÄÕÂ¡£ 
CPANÉÏµÄXMLÄ£¿é¿ÉÒÔ·Ö³ÉÈý´óÀà£º¶Ô XML Êý¾ÝÌá¹©¶ÀÌØµÄ½Ó¿Ú£¨Í¨³£ÓÐ¹ØÔÚXMLÊµÀýºÍPerlÊý¾ÝÖ®¼äµÄ×ª»»£©£¬ÊµÏÖÄ³Ò»±ê×¼XML APIµÄÄ£¿é£¬ºÍ¶ÔÒ»Ð©ÌØ¶¨µÄXMLÏà¹ØÈÎÎñ½øÐÐ¼ò»¯µÄÌØÊâÓÃÍ¾Ä£¿é¡£Õâ¸öÔÂÎÒÃÇÏÈ¹Ø×¢µÚÒ»¸ö£¬XML Perl×¨ÓÃ½Ó¿Ú¡£ 
use Disclaimer qw(:standard);´ËÎÄµµ²»ÊÇÎªÁË¶ÔÄ£¿éÐÔÄÜ½øÐÐ»ù×¼²âÊÔ£¬ÎÒµÄÄ¿µÄÒ²²»ÊÇ°µÊ¾Ä³Ò»Ä£¿é±ÈÁíÒ»¸öÄ£¿é¸üÓÐÓÃ¡£ÎªÄãµÄÏîÄ¿Ñ¡ÔñÕýÈ·µÄ XML Ä£¿é¸ü¶àÒÀÀµÓÚÏîÄ¿±¾ÉíºÍÄã»ýÀÛµÄ¾­Ñé¡£²»Í¬µÄ½Ó¿ÚÊÊÓ¦ÓÚ²»Í¬µÄÈÎÎñºÍ²»Í¬µÄÈË¡£ÎÒµÄÎ¨Ò»Ä¿µÄÊÇÍ¨¹ý¶¨ÒåÁ½¸ö¼òµ¥µÄÈÎÎñ£¬È»ºóÌá¹©²»Í¬½è¿ÚµÄ¿ÉÔËÐÐÀý×ÓÀ´ÏÔÊ¾ÈçºÎ»ñµÃÍ¬ÑùµÄ×îÖÕ½á¹û¡£ ÈÎÎñËäÈ»XMLµÄÓÃÍ¾·Ç³£¶à£¬µ«´ó²¿·ÖXMLÏà¹ØÈÎÎñ¿É·Ö³ÉÁ½×é£ºÒ»ÊÇ´ÓÒÑÓÐµÄXMLÎÄµµÌáÈ¡Êý¾Ý£¬ÁíÒ»¸öÊÇÊ¹ÓÃÆäËû×ÊÔ´µÄÊý¾Ý´´½¨Ò»¸öÐÂµÄXMLÎÄµµ¡£¼ÈÈ»Èç´Ë£¬ÎÒÃÇËùÓÃÀ´½éÉÜ²»Í¬Ä£¿éµÄÀý×Ó½«ÓÉ¡°´ÓÒ»¸öXMLÎÄ¼þÖÐÌáÈ¡Ä³Ò»ÌØ¶¨Êý¾Ý¼¯¡±ºÍ¡°½«Ò»PerlÊý¾Ý½á¹¹×ªÎªÄ³Ò»ÌØ¶¨XML¸ñÊ½¡±×é³É¡£ ÈÎÎñÒ»£ºÌáÈ¡Êý¾ÝÊ×ÏÈ£¬¼ÙÉèÓÐÈçÏÂXMLÆ¬¶Ï£º 
&lt;?xml version=&quot;1.0&quot;?&gt;&lt;camelids&gt;  &lt;species name=&quot;Camelus dromedarius&quot;&gt;    &lt;common-name&gt;Dromedary, or Arabian Camel&lt;/common-name&gt;    &lt;physical-characteristics&gt;      &lt;mass&gt;300 to 690 kg.&lt;/mass&gt;      &lt;appearance&gt;        The dromedary camel is characterized by a long-curved         neck, deep-narrow chest, and a single hump.        ...      &lt;/appearance&gt;    &lt;/physical-characteristics&gt;    &lt;natural-history&gt;       &lt;food-habits&gt;         The dromedary camel is an herbivore.         ...       &lt;/food-habits&gt;       &lt;reproduction&gt;         The dromedary camel has a lifespan of about 40-50 years         ...       &lt;/reproduction&gt;       &lt;behavior&gt;         With the exception of rutting males, dromedaries show         very little aggressive behavior.         ...       &lt;/behavior&gt;       &lt;habitat&gt;         The camels prefer desert conditions characterized by a         long dry season and a short rainy season.         ...       &lt;/habitat&gt;    &lt;/natural-history&gt;    &lt;conservation status=&quot;no special status&quot;&gt;      &lt;detail&gt;        Since the dromedary camel is domesticated, the camel has        no special status in conservation.      &lt;/detail&gt;    &lt;/conservation&gt;  &lt;/species&gt;  ...&lt;/camelids&gt;
ÏÖÔÚÎÒÃÇ¼ÙÉè´ËÍêÕûÎÄµµ£¨¿É´Ó±¾ÔÂÀý×Ó´úÂëÖÐ»ñÈ¡£©°üº¬ÂæÍÕ¼Ò×åËùÓÐ³ÉÔ±µÄÈ«²¿ÐÅÏ¢£¬¶ø²»½ö½öÊÇÉÏÃæµÄµ¥·åÂæÍÕÐÅÏ¢¡£ÎªÁË¾ÙÀýËµÃ÷Ã¿Ò»Ä£¿éÊÇÈçºÎ´Ó´ËÎÄ¼þÖÐÌáÈ¡Ä³Ò»Êý¾Ý×Ó¼¯£¬ÎÒÃÇ½«Ð´Ò»¸öºÜ¼ò¶ÌµÄ½Å±¾À´´¦Àícamelids.xmlÎÄµµºÍÔÚSTDOUTÉÏÊä³öÎÒÃÇÕÒµ½µÄÃ¿Ò»ÖÖÀàµÄÆÕÍ¨Ãû£¨common-name£©£¬À­¶¡Ãû£¨ÓÃÀ¨ºÅ°üÆðÀ´£©£¬ºÍµ±Ç°±£´æ×´¿ö¡£Òò´Ë£¬´¦ÀíÍêÕû¸öÎÄµµ£¬Ã¿Ò»¸ö½Å±¾µÄÊä³öÓ¦¸ÃÎªÈçÏÂ½á¹û£º 
Bactrian Camel (Camelus bactrianus) endangered Dromedary, or Arabian Camel (Camelus dromedarius) no special status Llama (Lama glama) no special status Guanaco (Lama guanicoe) special concernVicuna (Vicugna vicugna) endangered
ÈÎÎñ¶þ£º´´½¨Ò»¸öXMLÎÄµµÎªÁËÊ¾·¶Ã¿Ò»Ä£¿éÊÇÈçºÎ´ÓÆäËûÊý¾ÝÔ´ÖÐ´´½¨ÐÂµÄXMLÎÄµµ£¬ÎÒÃÇ½«Ð´Ò»¸öÐ¡½Å±¾½«Ò»¸ö¼òµ¥µÄPerl hash×ª»»ÎªÒ»¸ö¼òµ¥µÄXHTMLÎÄµµ¡£hashÀï°üº¬Ò»Ð©Ö¸ÏòºÜcoolµÄÌØ¶¨Ïà¹ØÂæÍÕµÄÍøÒ³µÄURLs¡£ 
Hash ÈçÏÂ£º 
my %camelid_links = (    one   =&gt; { url         =&gt; '    http://www.online.discovery.com/news/picture/may99/photo20.html',               description =&gt; 'Bactrian Camel in front of Great ' .                              'Pyramids in Giza, Egypt.'},    two   =&gt; { url         =&gt; 'http://www.fotos-online.de/english/m/09/9532.htm',               description =&gt; 'Dromedary Camel illustrates the ' .                               'importance of accessorizing.'},    three =&gt; { url         =&gt; 'http://www.eskimo.com/~wallama/funny.htm',               description =&gt; 'Charlie - biography of a narcissistic llama.'},    four  =&gt; { url         =&gt; 'http://arrow.colorado.edu/travels/other/turkey.html',               description =&gt; 'A visual metaphor for the perl5-porters ' .                              'list?'},    five  =&gt; { url         =&gt; 'http://www.galaonline.org/pics.htm',               description =&gt; 'Many cool alpacas.'},    six   =&gt; { url         =&gt; 'http://www.thpf.de/suedamerikareise/galerie/vicunas.htm',               description =&gt; 'Wild Vicunas in a scenic landscape.'});
¶øÎÒÃÇËùÆÚÍû´ÓhashÖÐ´´½¨µÄÎÄµµÀý×ÓÎª£º 
&lt;?xml version=&quot;1.0&quot;&gt;&lt;html&gt;  &lt;body&gt;    &lt;a href=&quot;http://www.eskimo.com/~wallama/funny.htm&quot;&gt;Charlie -       biography of a narcissistic llama.&lt;/a&gt;    &lt;a href=&quot;http://www.online.discovery.com/news/picture/may99/photo20.html&quot;&gt;Bactrian      Camel in front of Great Pyramids in Giza, Egypt.&lt;/a&gt;    &lt;a href=&quot;http://www.fotos-online.de/english/m/09/9532.htm&quot;&gt;Dromedary      Camel illustrates the importance of accessorizing.&lt;/a&gt;    &lt;a href=&quot;http://www.galaonline.org/pics.htm&quot;&gt;Many cool alpacas.&lt;/a&gt;    &lt;a href=&quot;http://arrow.colorado.edu/travels/other/turkey.html&quot;&gt;A visual       metaphor for the perl5-porters list?&lt;/a&gt;    &lt;a href=&quot;http://www.thpf.de/suedamerikareise/galerie/vicunas.htm&quot;&gt;Wild      Vicunas in a scenic landscape.&lt;/a&gt;  &lt;/body&gt;&lt;/html&gt;
Á¼ºÃËõ½øµÄXML½á¹ûÎÄ¼þ£¨ÈçÉÏÃæËùÏÔÊ¾µÄ£©¶ÔÓÚÔÄ¶ÁºÜÖØÒª£¬µ«ÕâÖÖÁ¼ºÃµÄ¿Õ¸ñ´¦Àí²»ÊÇÎÒÃÇ°¸ÀýËùÒªÇóµÄ¡£ÎÒÃÇËù¹ØÐÄµÄÊÇ½á¹ûÎÄµµÊÇ½á¹¹Á¼ºÃµÄ/well-formedºÍËüÕýÈ·µØ±íÏÖÁËhashÀïµÄÊý¾Ý¡£ 
ÈÎÎñ¶¨ÒåÍê±Ï£¬½ÓÏÂÀ´¸ÃÊÇ´úÂëÀý×ÓµÄÊ±ºòÁË¡£ 
XML Perl×¨ÓÃ½Ó¿ÚÀý×ÓXML::Simple×î³õ´´½¨ÓÃÀ´¼ò»¯¶ÁÐ´XML¸ñÊ½ÅäÖÃÎÄ¼þµÄXML::Simple, ÔÚ×ª»»XMLÎÄµµºÍPerlÊý¾Ý½á¹¹Ö®¼äÃ»ÓÐÁíÍâµÄ³éÏó½Ó¿Ú¡£ËùÓÐµÄÔªËØºÍÊôÐÔ¶¼¿ÉÒÔÍ¨¹ýÇ¶Ì×µÄÒýÓÃÖ±½Ó¶ÁÈ¡¡£ 
Reading
use XML::Simple;my $file = 'files/camelids.xml';my $xs1 = XML::Simple-&gt;new();my $doc = $xs1-&gt;XMLin($file);foreach my $key (keys (%{$doc-&gt;{species}})){   print $doc-&gt;{species}-&gt;{$key}-&gt;{'common-name'} . ' (' . $key . ') ';   print $doc-&gt;{species}-&gt;{$key}-&gt;{conservation}-&gt;final . &quot;/n&quot;;}
Writing
use XML::Simple;require &quot;files/camelid_links.pl&quot;;my %camelid_links = get_camelid_data();my $xsimple = XML::Simple-&gt;new();print $xsimple-&gt;XMLout(/%camelid_links,                       noattr =&gt; 1,                       xmldecl =&gt; '');
ÕâÊý¾Ýµ½ÎÄµµµÄÈÎÎñµÄÌõ¼þÒªÇó±©Â¶ÁËXML::SimpleµÄÒ»¸öÈõµã£ºËüÃ»ÓÐÔÊÐíÎÒÃÇ¾ö¶¨hashÀïµÄÄÄ¸ökeyÓ¦¸Ã×÷ÎªÔªËØ·µ»ØºÍÄÄ¸ökey¸Ã×÷ÎªÊôÐÔ·µ»Ø¡£ÉÏÃæÀý×ÓµÄÊä³öËäÈ»½Ó½üÎÒÃÇµÄÊä³öÒªÇóµ«»¹Ô¶Ô¶²»¹»¡£¶ÔÓÚÄÇÐ©¸üÏ²»¶½«XMLÎÄµµÄÚÈÝÖ±½Ó×÷ÎªPerlÊý¾Ý½á¹¹²Ù×÷£¬¶øÇÒÐèÒªÔÚÊä³ö·½Ãæ×ö¸üÏ¸Î¢¿ØÖÆµÄ°¸Àý£¬XML::SimpleºÍXML::WriterÅäºÏµÃºÜºÃ¡£ 
ÈçÏÂÀý×ÓËµÃ÷ÁËÈçºÎÊ¹ÓÃXML::WriteÀ´·ûºÏÎÒÃÇµÄÊä³öÒªÇó¡£ 
use XML::Writer;require &quot;files/camelid_links.pl&quot;;my %camelid_links = get_camelid_data();my $writer = XML::Writer-&gt;new();$writer-&gt;xmlDecl();$writer-&gt;startTag('html');$writer-&gt;startTag('body');foreach my $item ( keys (%camelid_links) ) {    $writer-&gt;startTag('a', 'href' =&gt; $camelid_links{$item}-&gt;{url});    $writer-&gt;characters($camelid_links{$item}-&gt;{description});    $writer-&gt;endTag('a');}$writer-&gt;endTag('body');$writer-&gt;endTag('html');$writer-&gt;end();
XML::SimpleObjectXML::SimpleObject ¶ÔXMLÊý¾ÝÊ¹ÓÃ»ØÏëÎÄµµ¶ÔÏóÄ£ÐÍ£¨Document Object Model£©µÄ´æÈ¡Æ÷/accessorÀ´Ìá¹©Ò»¸öÃæ¶Ô¶ÔÏó½Ó¿Ú¡£ Reading
use XML::Parser;use XML::SimpleObject;my $file = 'files/camelids.xml';my $parser = XML::Parser-&gt;new(ErrorContext =&gt; 2, Style =&gt; &quot;Tree&quot;);my $xso = XML::SimpleObject-&gt;new( $parser-&gt;parsefile($file) );foreach my $species ($xso-&gt;child('camelids')-&gt;children('species')) {    print $species-&gt;child('common-name')-&gt;{VALUE};    print ' (' . $species-&gt;attribute('name') . ') ';    print $species-&gt;child('conservation')-&gt;attribute('status');    print &quot;/n&quot;;}
WritingXML::SimpleObject Ã»ÓÐÍ¨¹ý×¥È¡À´´´½¨XMLÎÄµµµÄ¹¦ÄÜ¡£µ«ÊÇÓëÉÏÃæµÄXML::SimpleÀý×ÓÒ»Ñù£¬¿ÉÒÔÍ¨¹ýÓëXML::WriterÅäºÏ¼òµ¥µÄÍê³ÉÈÎÎñ¡£ XML::TreeBuilderXML::TreeBuilder °üÓÉÁ½Ä£¿é×é³É£ºXML::ElementÓÃÀ´´´½¨ºÍ»ñµÃXMLÔªËØµãµÄÄÚÈÝºÍXML::TreeBuilder×÷ÎªÒ»¸ö¹¤³§°ü´ÓÒÑÓÐXMLÎÄ¼þÖÐ¼ò»¯ÎÄµµÊ÷µÄ´´½¨¡£¶ÔÓÚÄÇÐ©ÒÑÓÐÖµµÃ×ð¾´µÄ HTML::Element ºÍ HTML::Tree Ä£¿éÊ¹ÓÃ¾­ÑéµÄÈËÀ´Ëµ£¬Ê¹ÓÃ XML::TreeBuilder ÊÇ·Ç³£ÈÝÒ×µÄ£¬ÒòÎª³ýÁËXMLÌØÓÐµÄ·½·¨ÍâÆäËû¶¼ÊÇÒ»ÑùµÄ¡£ Reading
use XML::TreeBuilder;my $file = 'files/camelids.xml';my $tree = XML::TreeBuilder-&gt;new();$tree-&gt;parse_file($file);foreach my $species ($tree-&gt;find_by_tag_name('species')){    print $species-&gt;find_by_tag_name('common-name')-&gt;as_text;    print ' (' . $species-&gt;attr_get_i('name') . ') ';    print $species-&gt;find_by_tag_name('conservation')-&gt;attr_get_i('status');    print &quot;/n&quot;;}
Writing
use XML::Element;require &quot;files/camelid_links.pl&quot;;my %camelid_links = get_camelid_data();my $root = XML::Element-&gt;new('html');my $body = XML::Element-&gt;new('body');my $xml_pi = XML::Element-&gt;new('~pi', text =&gt; 'xml version=&quot;1.0&quot;');$root-&gt;push_content($body);foreach my $item ( keys (%camelid_links) ) {    my $link = XML::Element-&gt;new('a', 'href' =&gt; $camelid_links{$item}-&gt;{url});    $link-&gt;push_content($camelid_links{$item}-&gt;{description});    $body-&gt;push_content($link);}print $xml_pi-&gt;as_XML;print $root-&gt;as_XML();
XML::TwigXML::Twig ÓëÆäËûÖ»ÓÐPerlµÄXML½Ó¿Ú²»Í¬£¬ËüÊÇÒ»¸ö³ýÁË±ê×¼µÄXML APIsÍâ»¹ÓÐÆäËü¸»ÓÐ´´ÔìÐÔÌØµãµÄPerlish½Ó¿Ú¡£ÐèÒª¸ü¶à¸üÏêÏ¸µÄ½éÉÜÇë²é¿´XML.com ÎÄÕÂ Reading
use XML::Twig;my $file = 'files/camelids.xml';my $twig = XML::Twig-&gt;new();$twig-&gt;parsefile($file);my $root = $twig-&gt;root;foreach my $species ($root-&gt;children('species')){    print $species-&gt;first_child_text('common-name');    print ' (' . $species-&gt;att('name') . ') ';    print $species-&gt;first_child('conservation')-&gt;att('status');    print &quot;/n&quot;;}
Writing
use XML::Twig;require &quot;files/camelid_links.pl&quot;;my %camelid_links = get_camelid_data();my $root = XML::Twig::Elt-&gt;new('html');my $body = XML::Twig::Elt-&gt;new('body');$body-&gt;paste($root);foreach my $item ( keys (%camelid_links) ) {    my $link = XML::Twig::Elt-&gt;new('a');    $link-&gt;set_att('href', $camelid_links{$item}-&gt;{url});    $link-&gt;set_text($camelid_links{$item}-&gt;{description});    $link-&gt;paste('last_child', $body);}print qq|&lt;?xml version=&quot;1.0&quot;?&gt;|;$root-&gt;print;
ÕâÐ©Àý×Ó¾ÙÀýËµÃ÷ÁËÕâÐ©ÆÕÍ¨XML PerlÄ£¿éµÄ»ù±¾Ê¹ÓÃ·½·¨¡£ÎÒµÄÄ¿±êÊÇÌá¹©×ã¹»¶àµÄÀý×ÓÈÃÄã¸ÐÊÜÔõÃ´ÓÃÃ¿¸öÄ£¿éÐ´´úÂë¡£ÏÂ¸öÔÂÎÒÃÇ½«¹Ø×¢¡°ÊµÏÖÄ³Ò»±ê×¼XML APIµÄÄ£¿é¡±£¬ÌØ±ðËµÃ÷µÄ£¬XML::DOM, XML::XPath ºÍÆäËû´óÁ¿µÄ SAX ºÍÀàSAXÄ£¿é¡£]]></description>
		</item>
	</channel>
 </rss>
