Perl CGI ±à³Ì³£¼ûÎÊÌâ

ÎÄÌå˵Ã÷£º 
 
1. 
ÒëÕßÒѾÍÔ­ÎÄÖÐÓïÑɲ»Ïê¡¢×ÊѶ¹ýʱ£¬»ò¿É×÷¶îÍâ²¹³äÖ®´¦¸½¼Ó×¢½â¡£ÕâЩע½â 
 ¾ùÒÔÐǺŠ(*) ì¶Êʵ±´¦£¨Í¨³£Îª¾ä⣩±êʾ¡£Êµ¼ÊµÄ˵Ã÷ÎÄ×ÖÔò´ó¶à½ôÁÚÐǺŠ
 ËùÔڵĶÎÂ䣬×Ô³ÉÒ»¶Î¡£ËùÓÐ×¢½âÎÄ×Ö¾ùÒÔ¡¸¡¾ÒëÕß¡¿¡¹ÆðÍ·¡£ 
2. ·¶ÀýÖеĠPerl ³ÌʽÂëÒÑÓÉÒëÕßÊʶȼÓÒÔ·­Ò롢ȥ³ý¶àâŵÄÀ¨»¡£¬²¢ÒÀ 
 perlstyle manpages ÖÐËù½¨ÒéµÄд×÷¸ñʽ¼°Ï°¹ßÉÔ×÷ÐÞÕû¡£ 
 
--------------------------------------------------------------------------- 
 
Ŀ¼£º 
 
1.0 £­ÈëÃżò½é 
 
Q1.1:  ÎªÊ²÷áÎҵĠHTML page/form ÐèÒªÓàscript£¿ 
Q1.2:  CGI ¸÷´ú±íʲ÷᣿ 
Q1.3:  µ½µ×ʲ÷á½Ð script£¿ÎÒÄÜÄÃËüÀ´ÄÜ×öʲ÷᣿ 
Q1.4:  Ê²÷áÊÇ Perl£¿ÎªÊ²÷áÓÐÄÇ÷á¶àÈËÓÃËüÀ´×ö CGI£¿ 
Q1.5:  ÓÐûÓн̠CGI »ò Perl µÄÊé»òÊÇÏßÉÏ×ÊÁÏ£¿ 
Q1.6:  ÊDz»ÊÇÓÐÕâ·½ÃæµÄÓʵÝÂÛ̳ (mailing lists) »òÐÂÎÅÌÖÂÛȺ×飿 
Q1.7:  ÍøÂ·ÉÏÊDz»ÊÇÓÐרÃÅÊÕ²ØÓʵÝÂÛ̳»òÐÂÎÅÌÖÂÛȺ×éµÄ posts µÄÕ¾£¿ 
 
2.0 - Modules £¨Ä£×飩 
 
Q2.1:  ÎÒÊDz»ÊǸÃÓàPerl CGI modules À´Ð´ CGI scripts 
£¿×Ô¼º×ö²»ÊDZȽÏÈÝ 
    Ò×Â𣿠
Q2.2:  ÈçºÎÖªµÀij¸ö module ¸ÃÔõ÷á¸öÓ÷¨£¿ 
Q2.3:  ÓÐÄÄЩ Perl4 µÄ CGI »ò WWWµÄ libraries £¿ 
Q2.4:  ÓÐÄÄЩ¸ø Perl5 Ê¹ÓõĠCGI modules£¿ÎÒ¸ÃÓÃÄĸö£¿ÎªÊ²÷᣿ 
Q2.5:  ÎªÊ²÷áÕâ÷á¶à perl CGI libraries ¶¼ÊÇ object-oriented 
£¨Îï¼þµ¼Ïò£© 
    µÄ£¿ÎÒ¶ÔÓÃÎï¼þµ¼ÏòÀ´Ð´³ÌʽһÇϲ»Í¨¡£ÄѵÀ¾ÍûÓмòµ¥Ò»µã£¬¸ø²»»áÎï 
    ¼þµ¼ÏòµÄÈËʹÓõĠlibraries Âð£¿Îï¼þµ¼ÏòÓжàÄÑ£¿ 
 
3.0 - CGI Óë WWW Server 
 
Q3.1:  ÎҵĠPerl CGI ³ÌʽҪ·ÅÔÚÄÄÀïÖ´ÐУ¿cgi-bin 
Õâ¸öĿ¼ÊÇ×öÉõ÷áÓõģ¿ 
Q3.2:  Ê²÷áÊǵµ°¸Ê¹ÓÃȨÏÞ£¿ÔõÑù¸Ä£¿ 
Q3.3:  Perl Ó¦¸Ã°²×°ÔÚÄÄÀï²Å¿ÉÒÔÖ´ÐÐËü£¿ 
Q3.4:  ÎÒΪʲ÷áÒ»Ö±µÃµ½ ``Server: Error 500'' µÄѶϢ£¿ 
Q3.5:  ÎÒÊÔÖø´ò¿ªÒ»¸öµµ°¸£¬Ïë°Ñ×ÊÁÏ´¢´æÔÚÀïÍ·£¬µ«ÊÇ open() µÄÖ¸Áîʧ°Ü 
    ÁË¡£µ½µ×ÊÇÔõ÷á¸ãµÄ£¿ 
 
4.0 £­³ÌʽÉè¼ÆÒÉÄÑÔÓÖ¢ 
 
Q4.1:  ÎÒÏëÈàuser ÌîµÄ form ×ÊÁÏ×Ô¶¯¼Ä¸øÎÒ£¬¸ÃÔõ÷á×ö£¿ÓÐûÓз¶Àý£¿ 
Q4.2:  ¸Õ²ÅÕâ¸öÓàform ËÍÐŵĠscript ¿´ÆðÀ´ÓеãÄÑ¡£ÎªÊ²÷᲻Ǭ´àÓà
    `` URL''£¬ÕâÑù user ÌîÈëµÄ×ÊÁϾͿÉÒԼĸøÎÒÁË£¿ 
Q4.3:  ÎÒÒªÈçºÎÔÚ UNIX ÒÔÍâµÄƽ̨ÉÏ×ö Perl-CGI£¬Æ©Èç Mac¡¢MS-DOS¡¢ 
    Windows ¼° NT£¿ÎҵĠPerl CGI ³ÌʽÄܲ»ÄÜÔÚÕâЩƽ̨֮¼ä»¥ÏàÒÆÖ²ÄØ£¿ 
    Äܲ»ÄܺÜÖ±½Ó£¬Ã»ÓÐÂé·³£¿ÎÒÔÚ UNIX Ö÷»úÉÏÓÐÕʺţ¬µ«ÊǶ¼ÊÇÏÈÔÚ 
    Windows/Mac ÉÏ×ö¡£ÎÒÒªÈçºÎÔÚÎÒ×Ô¼ºµÄ»úÆ÷ÉϲâÊÔдºÃµÄ CGI scripts 
    £¿ 
Q4.4:  ÔÚ Perl CGI ³ÌʽÖУ¬STDERR £¨±ê×¼´íÎóѶϢ)¡¢STDIN 
(±ê×¼ÊäÈ룩£¬ºÍ 
    STDOUT £¨±ê×¼Êä³ö£©¸÷ÊÇÁ¬µ½ºÎ´¦£¿ 
Q4.5:  ÈçºÎд¼ÆÊýÆ÷£¿ 
Q4.6:  ÒªÈçºÎÓÃÒ»¸ö Perl µÄÈ¡´úÖ¸ÁËùÓРHTML ±êÇ©´ÓÒ»·ÝÎļþÖÐɾ³ý£¿ 
Q4.7:  ÒªÈçºÎÖªµÀÊÇË­£¯ÄĄ̈»úÆ÷£¯Äĸöä¯ÀÀÆ÷Ö´ÐÐÁËÎҵijÌʽ£¿ 
Q4.8:  È˼ҿ´µÃµ½ÎҵĠPerl CGI 
³ÌʽÂð£¿Èç¹ûÊÇÕâÑùµÄ»°£¬ÄDz»¾ÍÈÃËûÃÇÖªµÀ 
    ÎҵijÌʽÊÇÔõ÷áÔË×÷µÄÁË¡£ÕâÊǸö°²È«Â©¶´Âð£¿ÎÒÒªÔõ÷á°ÑËüÒþ²ØÆðÀ´£¿ 
Q4.9:  ÎÒÐèÒª½«Õû¸ö Perl library ¶¼¸´ÖƵ½ÎҵĠhtdocs Ä¿Â¼µ×ÏÂÂ𣿠
Q4.10: 
ÎÒΪʲ÷á²»¸Ã½ÐʹÓÃÕßÊäÈëËûÃǵÄÃÜÂë»òÉí·ÝÖ¤×ֺŻòÐÅÓÿ¨ºÅÂ룿ÓÐÒ» 
    ¸ö TYPE="password" ²»ÊǾÍÊÇÄÃÀ´×öÕâ¸öµÄÂ𣿠
Q4.11: ÎÒÒªÈçºÎ²úÉúרÃÅÌæ Netscape 
Éè¼ÆµÄÍøÒ³£¬ÒÔ±ðì¶ÊÀÉÏÆäËûµÄä¯ÀÀÆ÷£¿ 
Q4.12: ÎªÊ²÷áÎҵĠsystem() Ëù²úÉúµÄ×ÊÁÏÊä³ö˳Ðò²»¶Ô£¿ 
Q4.13: ÎÒÌý˵ Netscape »áÖ§Ô® Java¡£ÕâÊDz»ÊÇ˵ÎÒÏÖÔÚµÃÆú Perl£¬¸ÄJava 
    ÁË£¿ÊDz»ÊǸÃÕâ÷á×ö£¿ 
Q4.14: ÎÒÒªÈçºÎ¶ÁÈ¡»·¾³±äÊý£¿ÎªÊ²÷áËüÃÇÓÐʱºò»á²»Ò»Ñù£¿ 
Q4.15: ÎªÊ²÷áÎÒÊä³öµÄ×ÊÁϱ»½ÁÂÒÁË£¨Èç ``b < a'' »á±»ÆÆ»µµô£©£¿ 
Q4.16: ÎªÊ²÷áÎÒµÄPerl CGI ³Ìʽ¿ÉÒÔÓÉÖ¸ÁîÁУ¬È´ÎÞ·¨´Óä¯ÀÀÆ÷È¥Ö´ÐУ¿ 
Q4.17: ÎªÊ²÷áÎҵĠPerl CGI ³ÌʽÄÜÅÜ£¬µ«ÊDz»»á°Ñ×ÊÁÏдµ½µµ°¸ÖУ¿ 
Q4.18: ÒªÈçºÎ×öÒ»¸ö»áάϵ״̬£¬»òÔÊÐí¡¾Í¬Ò»Ê¹ÓÃÕß¡¿¶à´ÎÁ¬ÏߵĠform£¿ 
Q4.19: Èç¹û²»´Óä¯ÀÀÆ÷È¥Ö´ÐÐÎҵĠCGI ³Ìʽ£¬ÒªÈçºÎÌæËü³ý´í£¿ 
Q4.20: Èç¹û²»¿¿<FORM>±êÇ©£¬ÒªÈçºÎ½Ð³ö Perl CGI ³Ìʽ£¿ 
Q4.21: ÒªÈçºÎ±ÜÃâÅÔÈ˲»ÏÈÌîÀ¸Î»¾ÍÖ´ÐÐÎҵĠform£¿ËûÃÇΪʲ÷áÒ»Ö±²»¶ÏÕâ÷á 
    ×ö£¿ 
Q4.22: ÄÇЩ server »ØÓ¦Âë (server response codes) 
ÊǸÉʲ÷áÓõģ¿ÓÐʲ÷áÒâ 
    Ò壿 
Q4.23: ÎªÊ²÷á print "Location: http://host/page.html\n" ²» 
work£¿ÓÖΪʲ 
    ÷áËüÖ» work Ò»´Î£¬µ«ËæááµÄתÏò¾Í¶¼Åª´íÁËÄØ£¿ 
Q4.24: ÒªÈçºÎÈàserver ÔÚÿ¸ö HTML 
ÍøÒ³µÄµ×²¿¶¼×Ô¶¯¼ÓÉÏÒ»¸ö£º¡¸×î½ü¸üР
    ÈÕÆÚ£º ...¡¹µÄ¸æÊ¾£¿»òÕߣ¬ÊDz»ÊÇÖ»ÓРSSI µÄÍøÒ³²ÅÄÜÕâ÷á×ö£¿CGI ³Ì 
    Ê½µÄÈÕÆÚÒªÈçºÎÈ¡µÃ£¿ 
Q4.25: Ê²÷áÑùµÄ³¡ºÏÏÂÒÔ Perl Ð´ CGI ³Ìʽ»áÏÔµÃ̫СÌâ´ó×÷£¬ÒòΪÓàshell 
    ¾Í¿ÉÒÔ×öµ½£¿¶øÊ²÷áÑùµÄ³¡ºÏ¶Ô Perl À´ËµÓÖ¹ýì¶À§ÄÑ£¿ÓàC++ ×öÕâÀàµÄ 
    Ê²»ÊǺõöàÂð£¿ÄÇÓàC ÄØ£¿ 
 
5.0 £­°²È« 
 
Q5.1:  ÒÔ Perl Ð´³ÉµÄ CGI ³ÌʽÊDz»ÊDz»ÈçÒÔ shell »ò C Ð´µÄÀ´µÃ°²È«£¿ 
Q5.2:  ÎÒ¸ÃÌØ±ðÁôÒâÄÄЩ°²È«ÊÂÏ 
Q5.3:  ÎªÊ²÷á´ó¼Ò¶¼Ëµ http://bigidiot.abuse-me.com/perl.exe?foo.pl 
ÕâÑù 
    ºÜΣÏÕ£¿»áÓжàÔ㣿 
Q5.4:  ÒªÈçºÎÔÚ³ÌʽÖа²È«µØÊ¹ÓÃÄæÏòƲºÅ£¨backticks£¬"`"£©£¿Õâ÷á×ö£º 
    @ans = `grep'$user_field' some.file`; ÊDz»ÊÇÕæµÄ²»°²È«£¿ 
Q5.5:  /$user_variable/ Õâ¸ö¾ä·¨ÊDz»ÊÇ Perl 5 ÖеÄÒ»¸ö°²È«Â©¶´£¿ 
 
 
--------------------------------------------------------------------------- 
 
1.0 £­ÈëÃżò½é 
 
--------------------------------------------------------------------------- 
 
Q1.1: ÎªÊ²÷áÎҵĠHTML page/form ÐèÒªÓàscript£¿ 
 
ÒòΪÓеÄʱºòÄúÐèÒªÔÚ HTML 
ÎļþÖÐʹÓö¯Ì¬×ÊÁÏ£¨·Ç¹Ì¶¨²»±äµÄ×ÊÁÏ£©¡£Õâ°üÀ¨ÁË 
ÈÕÆÚºÍʱ¼äÕâÀàµÄ¼òµ¥×ÊÁÏ£¬»òÊÇÒ»¸öÏÔʾ¡¸ÄúÊǵڠxxx 
λ·Ã¿Í¡¹µÄ¼ÆÊýÆ÷¡£µ«Ëü 
Ò²¿ÉÄܰüÀ¨¸ù¾ÝʹÓÃÕßÊäÈë¶øµÃ³öµÄ´ó±ýͼ£¯Ìõͳͼ¡¢×ÊÁÏ¿âËÑѰ²úÉúµÄ½á¹û£¬»ò¶¯ 
»­µÈÕâÀàµÄ¶«Î÷¡£Òª×ö³öÏñÕâÑùµÄ¶«Î÷£¬ÄúΨһµÄ·½·¨ÊÇʹÓàCGI scripts 
£¨¾¡¹ÜÄú 
Ò²¿ÉÒÔÓ¦Óÿͻ§¶Ë³Ìʽ£¬Èç Java ºÍ JavaScript 
À´´ïµ½Õâ¸öÄ¿µÄ£¬²»¹ýÄÇÓÖÊÇÍêÈ« 
²»Í¬µÄÒ»»ØÊ£¡£©¡£ 
 
--------------------------------------------------------------------------- 
 
Q1.2: CGI ¸÷´ú±íʲ÷᣿ 
 
ÒÔÏÂÊÇÎҵı༭* Andy Oram (<http://jasper.ora.com/andyo>) ºÍ Linda Mui 
(<http://pcnt1.ora.com>) £¨ËûÃǺܰô£¡£©ËùдµÄÒ»¶Î·Ç³£ºÃµÄÃèÊö£º 
 
     ¡¾ÒëÕß¡¿ÕâÊÇÔ­ÎĵĵÚÒ»×÷Õß Shishir G. Ö¸ËûËùдµÄ CGI Programming 
     on the World Wide Web (<http://www.ora.com/info/cgi/>) Ò»ÊéµÄ±à 
     ¼­¡£ 
 
     Common          ÏòÄúÈ·±£ CGI ¿ÉÒÔʹÓöàÖÖ³ÌʽÓïÑÔ²¢ºÍ¶àÖÖ 
                     ²»Í¬µÄϵͳ»¥¶¯¡£ËüÈÃÄú×ÔÓÉÑ¡Ôñ´ïµ½Ä¿µÄµÄ·½ 
                     ·¨£¬²»°ÑÄú°óËÀÔÚµ¥¶ÀÒ»ÖÖ×÷·¨Ö®ÏÂ*¡£ 
     Gateway         ÌáʾÄú CGI µÄÁ¦Á¿²»ÔÚì¶Ëü±¾ÉíËù×öµÄÊ£¬¶ø 
                     ÔÚì¶ËüÌṩÁËÁ¬½áÆäËûϵͳµÄDZÁ¦£¬ÀýÈç×ÊÁÏ¿â 
                     ºÍͼÐÎÖÆÔìÆ÷¡£ 
     Interface       Ö»ÊDZíʾ CGI ¶ÔÈçºÎÉÆÓÃÆäÌØÐÔÌṩÁËÃ÷È·µÄ 
                     ½ç¶¨£­»»¾ä»°Ëµ£¬Äú¿ÉÒÔÉè¼Æ³ÌʽÀ´Êʵ±ÀûÓÃÕâ 
                     ¸ö½éÃæ¡£ 
 
          ¡¾ÒëÕß¡¿ËƺõÓÐÓ°Éä Java Ö®Òâ¡£ 
 
--------------------------------------------------------------------------- 
 
Q1.3: µ½µ×ʲ÷á½Ð script£¿ÎÒÄÜÄÃËüÀ´ÄÜ×öʲ÷᣿ 
 
¼òµ¥µÄ˵£¬script 
¾ÍÊdzÌʽ£¡ºÃ°É¡¢ºÃ°É£¬Ó¦¸Ã˵¶þÕßÓÐÓïÒâÉϵIJî±ð¡£Èç¹ûÄúÕæ 
µÄÏëÖªµÀ£¬ÄÇ÷áÈ¥ÂòÒ»±¾µçÄÔ³ÌʽÉè¼ÆµÄÊéÀ´¿´£¨»òÐí¸Ã˵ script Éè¼Æ :-) 
£©¡£ 
 
Äú¿ÉÒÔ½åÖøÐ´ CGI ³Ìʽ/script 
±äºÜ¶àħÊõ¡£Äú¿ÉÒÔ¼´Ê±ÖÆ×÷ͼÐΡ¢Á¬½á×ÊÁϿ⴫ 
»Ø¡¾²éѯ¡¿½á¹û£¬»¹¿ÉÒÔÁ¬µ½ Internet ÉÏÆäËûµÄ servers È¥¡£ 
 
--------------------------------------------------------------------------- 
 
Q1.4: Ê²÷áÊÇ Perl£¿ÎªÊ²÷áÓÐÄÇ÷á¶àÈËÓÃËüÀ´×ö CGI£¿ 
 
´ð°¸¾ÍÔÚ perl manpage ÖеÄǰÈýÐÐÐðÊö£º 
 
     Perl ÊÇÒ»½âÒëʽµÄÓïÑÔ£¬×¨Îª¸ßЧÂʼìÊÓÎÄ×Öµµ°¸¡¢´ÓÖгéÈ¡×ÊÁÏ£¬¾Ý 
     ÒÔÓ¡ÖÆ±¨±í¶øÉè¼Æ¡£ 
 
¾ø´ó¶àÊý CGI 
Ó¦ÓóÌʽµÄÈÎÎñ¶¼Éæ¼°¶Ô×ÊÁÏ×÷ijÖ̶ֳȵĴ¦Àí£¬¼°Á¬½áÍâÔÚ³Ìʽ¡£ 
Perl Ç¡ºÃÌṩÁ˺ÃÓõŤ¾ß£¬ÈÃÈËÇáËÉÓä¿ìµØ´ï³ÉÕâЩÈÎÎñ¡£ 
 
--------------------------------------------------------------------------- 
 
Q1.5: ÓÐûÓн̠CGI »ò Perl µÄÊé»òÊÇÏßÉÏ×ÊÁÏ£¿ 
 
   * NCSA µÄ CGI Îļþ (<http://hoohoo.ncsa.uiuc.edu/cgi>) 
   * Forms ÈëÃÅÖ¸Òý 
     (<http://robot0.ge.uiuc.edu/~carlosp/cs317/ft.4-5.html>) 
   * Ðí¶à CGI ×ÊÔ´½áµã 
 
(<http://www.cs.oberlin.edu/students/thirdstream/paxtond/cgi_stuff.html>) 
   * Ô­Ê¼µÄ CGI FAQ (<http://www.best.com/~hedlund/cgi-faq>) 
   * Perl FAQ (<http://mox.perl.com/perl/faq/index.html>) 
   * ÓÉ Lincoln Stein ËùÖø£¬Ò»·ÝºÜÍêÕûµÄWWW ¼° CGI ²Ù×÷°²È« FAQ 
     (<http://www-genome.wi.mit.edu/WWW/faqs/www-security-faq.html>) 
   * Paul Phillips ËùÖø£¬CGI °²È« FAQ 
     (<http://www.cerf.net/~paulp/cgi-security/safe-cgi.txt>) 
   * WWW FAQ (<http://boutell.com/faq/>) 
 
          ¡¾ÒëÕß¡¿´Ë·Ý FAQ µÄÖÐÒë°æ¿ÉÔÚ 
          http://www.acer.net/document/cwwwfaq/ 
          (<http://www.acer.net/document/cwwwfaq/>) ´¦È¡µÃ¡£ 
 
ÒÔÏÂÊÇÓÉ Cye H. Waldman (<http://wwwiz.com/books/cgi-perl.html>) 
ËùÕûÀíµÄ 
CGI ºÍ Perl Êé¼®Ò»ÀÀ±í*£º 
 
     ¡¾ÒëÕß¡¿´Ë±íÓÉÒëÕ߸üУ¬Í¬Ê±¼ÓÈëÁËÔ­ÎÄ×÷Õß Tom C. µÄ Perl ÊéÆÀ 
     (<http://www.perl.com/perl/critiques/>)ÒÔ¹©¶ÁÕ߲ο¼¡£Çë×¢Ò⣺CGI 
     ¸÷ÊéµÄµÈ¼¶ÆÀ¶¨Ä˵¥¾ÍÆä Perl ²¿·ÝµÄË®×¼¼°ÕýÈ·ÐÔ¶øÑÔ¡£·ûºÅ˵Ã÷£º 
     £¨Tom C. ÓÃÂæÍÕ¶ø·ÇÐÇÐÇ£© 
 
          Îå¿ÅÐÇ£¨£ª£ª£ª£ª 
          £ª£©               ==> ºÜ°ôµÄÊé (terrific books) 
          ËÄ¿ÅÐÇ£¨£ª£ª£ª 
          £ª£©               ==> ²»´íµÄÊé (fine books) 
          Èý¿ÅÐÇ£¨£ª£ª£ª£©   ==> ÏñÑùµÄÊé (decent books) 
          Á½¿ÅÐÇ£¨£ª£ª£©     ==> ÂíÂí»¢»¢¡¢ÃãÇ¿¹ýµÃÈ¥µÄÊé (so-so 
books) 
          Ò»¿ÅÐÇ£¨£ª£©       ==> ²î¾¢µÄÊé (poor books) 
          Áã¿ÅÐÇ£¨0£ª£©      ==> ´óÀÃÊé (terrible books) 
                  NA         ==> ²»ÊÊÓá¢ÎÞÊéÆÀ (Not 
Applicable/Available) 
                  v4         ==> ÄÚÈݽÏÀϾɣ¬½öº¬¸Ç Perl4 
 
----------------------------------------------------------------------------- 
+---------------------------------------------------------------------------+ 
      ×÷Õß                ÊéÃû            ÆÀ¼Û       ³ö°æÕß      Ëù¸½ 
ÊÛ¼Û 
                                                                 ÈíÌå 
(ÃÀ½ð) 
+---------------------------------------------------------------------------+ 
                Effective Perl 
                Programming: 60 Methods 
 Joseph Hall    and Rules for Scripting  NA     Addison-Wesley    ¡õ 
$30 
                Better Programs 
                £¨Ô¤¶¨³ö°æÈÕÆÚ£º1997Äê1 
                Ô£© 
+---------------------------------------------------------------------------+ 
                Perl Developer's Toolkit 
 Jon Orwant     £¨Ô¤¶¨³ö°æÈÕÆÚ£º1997Äê1  NA     Advice Press      ¡õ 
$?? 
                Ô£© 
+---------------------------------------------------------------------------+ 
                Cgi Programming For 
 ??             Dummies                  NA     IDG Books         ¡õ 
$25 
                £¨Ô¤¶¨³ö°æÈÕÆÚ£º1997Äê1 
                Ô£© 
+---------------------------------------------------------------------------+ 
                Mastering Regular 
                Expressions: Powerful 
 Jeffrey Friedl Techniques for Perl and  NA     O'Reilly          ¡õ 
$30 
                Other Tools 
                £¨Ô¤¶¨³ö°æÈÕÆÚ£º1997Äê1 
                Ô£© 
+---------------------------------------------------------------------------+ 
                CGI Developer's Resource 
 J.M. Ivler     £¨Ô¤¶¨³ö°æÈÕÆÚ£º1997Äê3  NA     Prentice Hall     ¹â 
$45 
                Ô£©µú 
+---------------------------------------------------------------------------+ 
                Perl 5 Windows NT 
 Various        Programming 
 authors        £¨Ô¤¶¨³ö°æÈÕÆÚ£º1997Äê1  NA     New Riders        ¡õ 
$45 
                Ô£© 
+---------------------------------------------------------------------------+ 
                Teach Yourself CGI 
 Eric Herrmann  Programming with Perl 5  NA     Sams.net          ¹â 
$40 
                in a Week, 2nd Ed.                                µú 
+---------------------------------------------------------------------------+ 
                CGI: Internet 
 Mark Felton    Programming C++ & C      NA     Prentice Hall     ¡õ 
$?? 
                £¨Ô¤¶¨³ö°æÈÕÆÚ£º1997Äê3 
                Ô£© 
+---------------------------------------------------------------------------+ 
                CGI Bible 
 Ed Tittle      £¨Ô¤¶¨³ö°æÈÕÆÚ£º1996Äê11 NA     IDG Books         ¡õ 
$?? 
                Ô£© 
+---------------------------------------------------------------------------+ 
 Craig Patchett The CGI Cookbook: Perl 
 &              and JavaScript           NA     Wiley             ¹â 
$40 
 Matt Wright    £¨Ô¤¶¨³ö°æÈÕÆÚ£º1996Äê11                          µú 
                Ô£© 
+---------------------------------------------------------------------------+ 
                Drag-n-Drop CGI 
 Baron Weil     £¨Ô¤¶¨³ö°æÈÕÆÚ£º1997Äê1  NA     Addison-Wesley    ¡õ 
$?? 
                Ô£© 
+---------------------------------------------------------------------------+ 
 Stephen Lines  How To Program CGI with  NA     Ziff-Davis        ¹â 
$40 
                Perl 5.0                                          µú 
+---------------------------------------------------------------------------+ 
                CGI Programming for 
 Bob Denny et   Windows                                           ´Å 
 al.            £¨Ô¤¶¨³ö°æÈÕÆÚ£º1997Äê3  NA     O'Reilly          Æ¬ 
$30 
                Ô£© 
+---------------------------------------------------------------------------+ 
 Selena Sol & 
 Gunther        Instant Web Scripts with NA     MIS:Press/M&T     ¹â 
$40 
 Birznieks      CGI/Perl                        Books             µú 
+---------------------------------------------------------------------------+ 
                Perl For Dummies 
 ??             £¨Ô¤¶¨³ö°æÈÕÆÚ£º1996Äê10 NA     IDG Books         ¡õ 
$25 
                Ô£© 
+---------------------------------------------------------------------------+ 
 Steven E.      CGI Web Scripting With 
 Brenner &      Perl                     NA     MIS:Press/M&T     ¹â 
$40 
 Edwin Aoki     £¨³ö°æÈ¡Ïû£©                    Books             µú 
+---------------------------------------------------------------------------+ 
 ??             Perl & CGI Programming   NA     Sams.net          ¡õ 
$45 
                Starter Kit 
+---------------------------------------------------------------------------+ 
 Mohammed J.    CGI Primer Plus for                               ¹â 
 Kabir          Windows                  NA     Waite             µú 
$45 
+---------------------------------------------------------------------------+ 
                Foundations of WWW 
 Ed Tittel et   Programming with HTML                             ¹â 
 al.            and CGI, 2nd Ed.         NA     IDG Books         µú 
$?? 
                £¨Ô¤¶¨³ö°æÈÕÆÚ£º1996Äê10 
                Ô£© 
+---------------------------------------------------------------------------+ 
 Jerry Muelver  Creating Cool Web Pages  £ª£ª   IDG Books         ¹â 
$30 
                With Perl                                         µú 
+---------------------------------------------------------------------------+ 
                HTML & CGI Unleashed, 
 John December  Professional Reference   NA     Sams.net          ¹â 
$50 
                Edition                                           µú 
+---------------------------------------------------------------------------+ 
                Cross-Platform Perl 
                (See also the author's 
 Eric Johnson   book site.)              £ª£ª   MIS:Press/M&T     ¹â 
$35 
                £¨Ô¤¶¨³ö°æÈÕÆÚ£º1996Äê9  £ª£ª   Books             µú 
                Ô£© 
+---------------------------------------------------------------------------+ 
 Daniel Berlin  CGI Programming 
 et al.         Unleashed                NA     Sams.net          ¡õ 
$55 
+---------------------------------------------------------------------------+ 
                Web Client Programming 
 Clinton Wong   in Perl                  NA     O'Reilly          ¡õ 
$30 
                £¨Ô¤¶¨³ö°æÈÕÆÚ£º1997Äê3 
                Ô£© 
+---------------------------------------------------------------------------+ 
                Perl 5 
 Robert Seymour £¨Ô¤¶¨³ö°æÈÕÆÚ£º1996Äê10 NA     Springer-Verlag   ¡õ 
$40 
                Ô£© 
+---------------------------------------------------------------------------+ 
 M¡õhe¡õ ¡õ 
 Foghl¡õ        Perl 5 Quick Reference   £ª     Que               ¡õ 
$20 
+---------------------------------------------------------------------------+ 
 Robert Niles &                                                   ¹â 
 Jeffry Dwight  CGI by Example           NA     Que               µú 
$35 
+---------------------------------------------------------------------------+ 
                PC Magazine Programming 
 Jonathan Hagey Perl 5.0 CGI Web Pages   0£ª    Ziff-Davis        ¹â 
$35 
                for Microsoft Windows NT                          µú 
+---------------------------------------------------------------------------+ 
                Web Programming with 
 ??             Perl                     NA     Sams.net          ¹â 
$40 
                £¨Ô¤¶¨³ö°æÈÕÆÚ£º1996Äê8                           µú 
                Ô£© 
+---------------------------------------------------------------------------+ 
                Perl 5 Developer's Guide 
 ??             £¨Ô¤¶¨³ö°æÈÕÆÚ£º1996Äê12 NA     Sams              ¹â 
$60 
                Ô£©µú 
+---------------------------------------------------------------------------+ 
 David Medinets Perl 5 by Example        £ª£ª   Que               ¹â 
$35 
                                         +1/2                     µú 
+---------------------------------------------------------------------------+ 
 Stephen Asbury                                                   ¹â 
 et al.         CGI How-To               NA     Waite             µú 
$40 
+---------------------------------------------------------------------------+ 
                Visual Basic Internet 
 Carl Franklin  Programming              NA     Wiley             ¹â 
$40 
                £¨Ô¤¶¨³ö°æÈÕÆÚ£º1996Äê5                           µú 
                Ô£© 
+---------------------------------------------------------------------------+ 
 InfoMagic      Mother of Perl           NA     SSC               ¹â 
$35 
                £¨Ò»Ì×Á½ÕŹâµú£©µú 
+---------------------------------------------------------------------------+ 
 Larry Wall et  Programming Perl, 2nd    £ª£ª 
 al.            Ed.                      £ª£ª   O'Reilly          ¡õ 
$40 
                                         £ª 
+---------------------------------------------------------------------------+ 
                CGI Developer's Guide 
 Eugene Kim     £¨Ô¤¶¨³ö°æÈÕÆÚ£º1996Äê5  £ª£ª   Sams.net          ¹â 
$50 
                Ô£©µú 
+---------------------------------------------------------------------------+ 
 Robert         CGI Manual of Style 
 McDaniel       £¨¿É×ÔÏßÉÏÈ¡µÃ£©         NA     Ziff-Davis        ¡õ 
$25 
+---------------------------------------------------------------------------+ 
 ??             Perl 5 for Dummies       NA     IDG Books         ¹â 
$?? 
                £¨Ô¤¶¨³ö°æÈÕÆÚ£º1996Ä꣩µú 
+---------------------------------------------------------------------------+ 
                Developing Internet 
 Ginsburg &     Applications with Perl 
 Tall           £¨Ô¤¶¨³ö°æÈÕÆÚ£º1996Äê3  NA     Sams.net          ¡õ 
$?? 
                Ô£© 
+---------------------------------------------------------------------------+ 
 Kamran Husain  Perl 5 Unleashed         £ª     Sams              ¹â 
$50 
                                                                  µú 
+---------------------------------------------------------------------------+ 
                Teach Yourself Perl 5, 
 Norton         2nd Edition              NA     Sams              ¹â 
$?? 
                £¨Ô¤¶¨³ö°æÈÕÆÚ£º1996Äê6                           µú 
                Ô£© 
+---------------------------------------------------------------------------+ 
 Michael Erwin  Special Edition Using 
 et al.         CGI                      NA     Que               ¡õ 
$60 
+---------------------------------------------------------------------------+ 
 Thomas Boutell CGI Programming in C and £ª£ª   Addison-Wesley    ¹â 
$35 
                Perl                     £ª£ªµú 
+---------------------------------------------------------------------------+ 
                Perl 5 Desktop Reference 
 Johan Vromans  £¨¿É×Ô CPAN ÏÂÔØÔ­Ê¼Âë×Ô NA     O'Reilly          ¡õ 
$7 
                ÐÐÓ¡ÖÆ£© 
+---------------------------------------------------------------------------+ 
 Christian      The Webmaster's 
 Neuss &        Handbook: Perl Power for NA     Int'l Thomson     ¹â 
$30 
 Johan Vromans  Your Web Server                                   µú 
+---------------------------------------------------------------------------+ 
 William E.                                                       ¹â 
 Weinman        The CGI Book             NA     New Riders        µú 
$45 
+---------------------------------------------------------------------------+ 
                World Wide Web Database 
 Brian Jepson   Programming for Windows  NA     Wiley             ¹â 
$40 
                NT                                                µú 
+---------------------------------------------------------------------------+ 
 Steven E.                               £ª£ª 
 Brenner &      Introduction to CGI/     £ª     MIS:Press/M&T     ¡õ 
$20 
 Edwin Aoki     Perl                     (v4)   Books 
+---------------------------------------------------------------------------+ 
 Ed Tittel &    Perl 5 Programming 
 Sebastion      Secrets                  NA     IDG Books         ¹â 
$45 
 Hassinger      £¨Ô¤¶¨³ö°æÈÕÆÚ£º1996Äê3                           µú 
                Ô£© 
+---------------------------------------------------------------------------+ 
 David Harlan   Special Edition Using 
 et al.         Perl 5 for Web           £ª£ª   Que               ¡õ 
$50 
                Programming 
+---------------------------------------------------------------------------+ 
 Shishir        CGI Programming on the                            ¹â 
 Gundavaram     World Wide Web           £ª£ª   O'Reilly          µú 
$30 
+---------------------------------------------------------------------------+ 
                The Official 60 Minute   £ª£ª 
 Robert Farrel  Guide to CGI Programming £ª     IDG Books         ¡õ 
$20 
                with Perl                (v4) 
+---------------------------------------------------------------------------+ 
 Ed Tittel & 
 Sebastion      Web Programming Secrets  NA     IDG Books         ¹â 
$45 
 Hassinger      with HTML, CGI & Perl                             µú 
+---------------------------------------------------------------------------+ 
 John Deep & 
 Peter          Developing CGI           £ª£ª   Wiley             ¡õ 
$30 
 Holfelder      Applications with Perl   (v4) 
+---------------------------------------------------------------------------+ 
 Jon Orwant     Perl 5 Interactive       £ª£ª   Waite             ¹â 
$50 
                Course                   £ªµú 
+---------------------------------------------------------------------------+ 
 Aidan 
 Humphreys et   Perl 5 How-To            £ª£ª   Waite             ¹â 
$45 
 al.                                     £ªµú 
+---------------------------------------------------------------------------+ 
                Teach Yourself CGI       £ª£ª 
 Eric Herrmann  Programming with Perl in £ª     Sams.net          ¹â 
$40 
                a Week                   (v4)                     µú 
+---------------------------------------------------------------------------+ 
                Perl 
 Walnut Creek   £¨ÊÕ¼¸÷Àà×ÊÔ´¡¢µµ°¸¿â¡¢ NA     Walnut Creek      ¹â 
$40 
                ÈëÃÅÖ¸µ¼¡¢ÊµÀý¡¢source                            µú 
                code µÈ£© 
+---------------------------------------------------------------------------+ 
                Software Engineering 
 Carl Dichter & with Perl                                         ´Å 
 Mark Pease     £¨½ø½×¼¶£¬ÄÚÈÝÕë¶ÔÈíÌåר£ª     Prentice Hall     Æ¬ 
$30 
                ÒµÈËÊËÉè¼Æ£»·ÇÈëÃÅÖ¸Òý£© 
+---------------------------------------------------------------------------+ 
                                         £ª£ª 
 Ellie Quigley  Perl by Example          £ª     Prentice Hall     ¡õ 
$27 
                                         (v4) 
+---------------------------------------------------------------------------+ 
 John December 
 &              HTML & CGI Unleashed     NA     Sams.net          ¹â 
$50 
 Mark Ginsburg                                                    µú 
+---------------------------------------------------------------------------+ 
 David Till     Teach Yourself Perl in   £ª£ª   Sams              ¡õ 
$30 
                21 Days                  (v4) 
+---------------------------------------------------------------------------+ 
 Larry Wall & 
 Randal L.      Programming Perl         NA     O'Reilly          ¡õ 
$30 
 Schwartz 
+---------------------------------------------------------------------------+ 
 Randal L.                               £ª£ª 
 Schwartz       Learning Perl            £ª£ª   O'Reilly          ¡õ 
$25 
                                         (v4) 
+---------------------------------------------------------------------------+ 
 Ed Tittel et   Foundations of WWW                                ¹â 
 al.            Programming with HTML    NA     IDG Books         µú 
$40 
                and CGI 
+---------------------------------------------------------------------------+ 
                How To Set Up and 
                Maintain a World Wide 
 Lincoln Stein  Web Site, 2nd Edition    £ª£ª   Addison-Wesley    ¹â 
$55 
                £¨Ô¤¶¨³ö°æÈÕÆÚ£º1997Äê1  £ª£ªµú 
                Ô£© 
+---------------------------------------------------------------------------+ 
----------------------------------------------------------------------------- 
 
     ¡¾ÒëÕß¡¿ÖÐÎĵĠCGI ºÍ Perl µÄÊéÄ¿ÔòÉдýºÃÐĵĶÁÕßÌṩ¡£ 
 
--------------------------------------------------------------------------- 
 
Q1.6: ÊDz»ÊÇÓÐÕâ·½ÃæµÄÓʵÝÂÛ̳ (mailing lists) »òÐÂÎÅÌÖÂÛȺ×飿 
 
ÿÌìÓÐÎÞÊýµÄ CGI ¸ßÊÖÔÚ¡¸¼àÊÓ¡¹ÖøÕâ¸öºÜÓÐÓõÄÐÂÎÅÌÖÂÛȺ×飺 
comp.infosystems.www.authoring.cgi*¡£ 
 
     ¡¾ÒëÕß¡¿ÖÐÎĵÄÌÖÂÛȺÖÐ×îÊʺÏ×öÕâ·½ÃæµÄÌÖÂ۵Ĵó¸ÅÒªËãÊÇ 
     tw.bbs.comp.www ÁË¡£»¹ÓУ¬Çë²»Òª½« CGI ÎÊÌâ post µ½ 
     comp.lang.perl.misc ÉÏÍ·È¥£¬±ð˵ÒëÕßûÏȾ¯¸æÄúภ;-) ¡£ 
 
µ«ÊÇ£¬³ý·ÇÄúÏȰѠFAQ ¶Á¹ýÒ»±é£¬·ñÔòÄú²»Ó¦¸Ãµ½Õâ¸ö°æ×ÓÉÏÈ¥Ëæ±ã post 
ÎÊÌâ 
£¨»òÆäËûÈκΰæ×Ó£»Í¬ÑùµÄµÀÀí£©¡£ 
 
ÍøÂ·ÉÏÓи÷ʽ¸÷ÑùÌÖÂÛ Perl¡¢CGI£¬¼° Web µÄÓʵÝÂÛ̳ 
(<http://perl.com/perl/info/mailing-lists.html>)£¬µ«ÒÔµ×ÏÂÕâÁ½¸ö×îÊÜ»¶Ó­£º 
 
cgi-perl-request@webstorm.com ¡¾Hypermail µµ°¸¿â¡¿ 
(<http://www.webstorm.com/local/cgi-perl>) 
 
     Õâ¸öÂÛ̳ÊǸø·¢Õ¹ Perl5 CGI 
Ä£×é¡¢»ò¶Ô´ËÓÐÐËȤµÄÈËÓõġ£Ëü²¢²»ÌṩÈΠ
     ºÎ CGI Ö§Ô®*¡£ 
 
          ¡¾ÒëÕß¡¿´Ë mailing list ÒѾ­ÊýÔÂûÓРposts £¬ÊÙÖÕÕýÇÞÁË¡£Õâ 
          ¿ÉÄÜÊÇÓÉì¶ÌÖÂÛµÄÖ÷Ì⣭CGI::* Ä£×éÌ×¼þ£¨Ïê¼ûÒÔϵڶþƪ 
          ¡¸Modules £¨Ä£×飩¡¹µÄ˵Ã÷£©ÒѾ­ÓкÃÒ»¶Îʱ¼äûÓиüÐÂÁË¡£Ä£ 
          ×éµÄά»¤ÈË Lincoln Stein ½üÒ»Äê¶àÀ´Ëƺõ¶¼½«ÖØÐÄ·ÅÔÚËûµÄ 
          CGI.pm ÉÏ£¬¶ø CGI.pm Ò²È¡´úÁË CGI::* Õâ¸öÌ×¼þµÄµØÎ»¡£¶ÁÕßÈç 
          ¶Ô CGI::* »ò CGI.pm ÓÐÎÊÌâµÄ»°¿Éдµ½ comp.lang.perl.modules 
          ÉÏÍ·È¥¡£ 
 
libwww-perlrequest@ics.uci.edu ¡¾Hypermail µµ°¸¿â¡¿ 
(<http://www.ics.uci.edu/WebSoft/libwww-perl/archive>) 
 
     libwww-perl Õâ¸ö library Ì×¼þΪ Web 
¿Í»§¼°ËÅ·þ³ÌʽÉè¼ÆÌṩÁËÒ»Ì×¼ò±ãµÄ 
     ½éÃæ*¡£ 
 
          ¡¾ÒëÕß¡¿´Ë mailing list ²»ÊʺÏ×ö CGI µÄÌÖÂÛ¡£libwww-perl ÊÇ 
          Ò»ÏîÒÔ Perl Îª·¢Õ¹¹¤¾ß¡¢ÀàËÆ W3C/CERN µÄ libwww 
          (<http://www.w3.org/pub/WWW/Library/>) µÄ¼Æ»­£¨ááÕßÓõÄÊÇ C 
          £©¡£ 
 
Äú¿ÉÒÔÔÚ£º 
     http://www.ics.uci.edu/pub/websoft/libwww-perl 
     (<http://www.ics.uci.edu/pub/websoft/libwww-perl>)È¡µÃ¾ÉµÄ 
(Perl4) 
     libwww-perl µÄÏà¹Ø×ÊÁÏ¡£ 
 
×îеĠPerl5 libwww Ì×¼þ¿ÉÔÚ£º 
     http://www.sn.no/~libwww-perl/ (<http://www.sn.no/libwww-perl/>) 
´¦È¡ 
     µÃ¡£ 
 
CPAN: Perl Ä£×éͬʱҲ¿ÉÒÔÔÚ¶àÖØ¸´ÖÆ¡¢·ÖɢʽµÄ CPAN 
(<http://www.perl.com/CPAN/README.html>) 
ϵͳȡµÃ¡£Õâ»á×Ô¶¯ÌæÄúÑ¡ÔñÒ»¸ö¡¸ 
¿¿½üÄúµÄÕ¾ 
(<http://www.perl.com/perl/news/cpan-mux.html>)¡¹¡£Æ©Èç˵£¬Äú¿É 
ÒÔ×¥ LWP Ä£×éµÄ source (<http://perl.com/cgi-bin/cpan_mod?module=LWP>) 
»òÖ» 
×¥ËüµÄ readme 
(<http://perl.com/cgi-bin/cpan_mod?module=LWP&readme=1>)¡£ 
 
--------------------------------------------------------------------------- 
 
Q1.7: ÍøÂ·ÉÏÊDz»ÊÇÓÐרÃÅÊÕ²ØÓʵÝÂÛ̳»òÐÂÎÅÌÖÂÛȺ×éµÄ posts µÄÕ¾£¿ 
 
Êǵģ¬Äú¿ÉÒÔÊÔÊÔ The Usenet Newstand 
(<http://CriticalMass.com/Concord/>)¡£ 
ËùÓÐcomp.infosystems.www.* ÌÖÂÛȺ×éµÄÎÄÕ¶¼ÊÕ¼¯ÔÚÄǶù*¡£Í¬Ê±£¬cgi-perl 
¼° 
libwww ÕâÁ½¸öÓʵÝÂÛ̳ËûÃÇÒ²ÓÐÊÕ¼¯¡£ 
 
     ¡¾ÒëÕß¡¿Äúͬʱ¿ÉÒÔÊÔÊÔ DejaNews (<http://www.dejanews.com/>) ¡¢ 
     AltaVista (<http://www.altavista.digital.com/>) £¬ºÍ HotBot 
     (<http://www.hotbot.com/>) Õ⼸¸öËÑѰÒýÇæ£¯×ÊÁϿ⡣ DejaNews 
     (<http://www.dejanews.com/>) ÉõÖÁÁ¬ tw.bbs.* ¶¼ÊÕ¼¯£¨ÆäËûÁ½¸ö»ò 
     ÐíÒ²ÓУ¬µ«ÒëÕßûÊÔ¹ý£©¡£ 
 
--------------------------------------------------------------------------- 
 
 
2.0 - Modules £¨Ä£×飩 
 
--------------------------------------------------------------------------- 
 
Q2.1: ÎÒÊDz»ÊǸÃÓàPerl CGI modules* À´Ð´ CGI scripts 
£¿×Ô¼º×ö²»ÊDZȽÏÈÝÒ× 
Â𣿠
 
     ¡¾ÒëÕß¡¿ CGI modules ÔÚ´ËÖ¸ CGI.pm ¼°ÆäËû CGI::* µÄÄ£×飻Ïê¼û 
     Q2.4 ¡£ 
 
ÕâÍêȫȡ¾öì¶ÄúÒª×öµÄÊÇʲ÷á¡£CGI modules ½ÏÊʺÏÖØÁ¿¼¶µÄ CGI scripts 
¡£Èç¹û 
ÊǼòµ¥µÄ scripts µÄ»°£¬×Ô¼º×ö»òÕßÊÇÓàCGI Lite 
Õâ¸öÄ£×é»á¼ò±ãÐí¶à¡£Èç¹ûÄú 
ÕæµÄÔ¸Ò⣬ÄúÉõÖÁ¿ÉÒÔÓþɵĠPerl4 cgi-lib.pl Õâ¸ö library*¡£ 
 
     ¡¾Òë×¢¡¿×÷Õß Tom C. Ö®ËùÒÔÕâ÷á˵ÊÇÒòΪËû»ù±¾Éϲ»ÔÞ³ÉʹÓà
     cgi-lib.pl £¬ÓÐÐËȤµÄ¶ÁÕß¿ÉÒÔ¿´ËûдµÄ Why I am not fond of 
     cgi-lib.pl (<http://www.perl.com/perl/info/www/!cgi-lib.html>) 
     £¨ÎªÊ²÷áÎÒ²»ÐÀÉÍ cgi-lib.pl £©¡£ 
 
--------------------------------------------------------------------------- 
 
Q2.2: ÈçºÎÖªµÀij¸ö module ¸ÃÔõ÷á¸öÓ÷¨£¿ 
 
´ó¶àÊý modules µÄʹÓÃ˵Ã÷ÊÇÖ±½ÓǶÔÚ³ÌʽÀïµÄ*¡£Èç¹ûÊÇÕâÑùµÄ»°£¬Äú¿ÉÒÔÓà
pod2man Õâ¸ö script À´ÔĶÁʹÓÃÖ¸ÄÏ£º 
 
     % pod2text name_of_module.pm 
     % pod2man name_of_module.pm | nroff -man | more 
 
     ¡¾Òë×¢¡¿Èç¹ûÄúÔÚ *.pm µµÖп´µ½ ``=head1''¡¢``=cut'' ÕâÀàµÄ¶«Î÷±ã 
     ÊÇÏÔʾʹÓÃ˵Ã÷Óи½ÔÚÀïÍ·¡£ÕâÊÇ Larry Wall Éè¼ÆµÄ POD (Plain Old 
     Document) ¸ñʽ¡£Ïê¼û perlpod manpages¡£ 
 
--------------------------------------------------------------------------- 
 
Q2.3: ÓÐÄÄЩ Perl4 µÄ CGI »ò WWWµÄ libraries £¿ 
 
×î¹ãΪʹÓõĠPerl4 CGI library ÊÇ Steve Brenner µÄ cgi-lib.pl 
(<http://www.bio.cam.ac.uk/web/form.html>)¡£ 
 
--------------------------------------------------------------------------- 
 
Q2.4: ÓÐÄÄЩ¸ø Perl5 Ê¹ÓõĠCGI modules£¿ÎÒ¸ÃÓÃÄĸö£¿ÎªÊ²÷᣿ 
 
CGI.pm 
(<http://www-genome.wi.mit.edu/ftp/pub/software/WWW/CGI.pm.tar.gz>)* 
     Õâ¸öºÜ°ôµÄ module ÔÚ¹¦ÄÜÉϺͲ¿·Ö CGI::* modules 
ÏàÖØµþ¡£Èç¹ûÄú²»ÏëºÍ¶à 
     ÖØ modules 
´ò½»µÀµÄ»°£¬Äú¿ÉÒÔÖ»ÓÃÕâÒ»¸ö¡£ÎÒÃǵÈÒ»ÏÂÔÚááÍ·»á¸øÄú¿´Ò»¸ö 
     ÓàCGI.pm À´Ìæ CGI scripts ³ý´íµÄʵÀý¡£ 
 
     ´ËÍ⣬Lincoln £¨Lincoln Stein£»CGI.pm µÄ×÷Õߣ©»¹Ð´ÁËÒ»±¾ÌÖÂÛ Web 
ºÍ 
     CGI ·Ç³£ºÃµÄÊ飬½Ð How To Set Up and Maintain a World Wide Web 
Site 
     (<http://www.aw.com/cp/Stein2e.html>)¡£ 
 
          ¡¾ÒëÕß¡¿½¨Òé¶ÁÕß¶àʹÓàCGI.pm ¡£CGI::* ÒѾ­Óкܳ¤Ò»¶Îʱ¼äû 
          ÓиüÐÂÁË£¬¶ø CGI.pm Ôò²»¶ÏµÄÓиÄÁ¼µÄаæÍƳö£¬²¢ÒѼÓÈë¶Ô 
          FastCGI (<http://www.fastcgi.com/>) µÄÖ§Ô®£¬Òò´Ë¶Ô FastCGI 
          µÄʹÓÃÕßÒ²Ï൱·½±ã¡£´ËÍ⣬mod_perl 
          (<http://www.osf.org/~dougm/apache/>) £¨Apache 
          (<http://www.apache.org/>) µÄ perl module£©ÖÐËù¸½µÄ CGI::XA 
          £¬Ò²ÊÇÓÉ CGI.pm ¸Ä½ø¶øÀ´µÄ¡£ CGI.pm ÈÃʹÓÃÕßÃâ³ý×Ô¼º×öµÍ½××Ê 
          ÁÏ´¦Àí£¨ÈçÓ¡ HTTP ±êÍ·¡¢Ìæ form, cookies ×ÊÁϽâÂëµÈ£©µÄÂé 
          ·³¡£ 
 
CGI::* Ä£×éÌ×¼þ 
(<http://www-genome.wi.mit.edu/ftp/pub/software/WWW/CGIperl/>) 
     ÕâЩģ×éÔ­ÏÈ´ó¶àÊÇÓÉ Tim Bunce Ëùд£¬ÏÖÔÚÔòÓÉ Lincoln Stein 
À´¸ºÔðά 
     »¤¡£ËüÃǵŦÄܰüÀ¨Á˰ïÄú²úÉú¼°´¦Àí form £¬Ìæ CGI 
³Ìʽ³ý´í£¬ÒÔ¼°ÔÚ²»Í¬ 
     µÄ forms Ö®¼äάϵһ¸ö״ֵ̬¡£ 
 
CGI Lite 
(<http://dongpo.math.ncu.edu.tw/perl/CPAN/authors/id/SHGUN/CGI_Lite-1.62.pm.gz>) 
     Õâ¸öÇáÁ¿¼¶µÄ module ÊÇ CGI::* modules 
Ö®ÍâµÄÁíÒ»¸öÑ¡Ôñ¡£Ëü¿ÉËãÊÇÔÚÀϾɠ
     µÄ cgi-lib.pl (<http://www.bio.cam.ac.uk/web/form.html>) 
Ö®ÉϸÄÁ¼¡¢¼Ó 
     ÁÏááµÄ²úÎï¡£ 
 
ÒÔÉÏÈýÕß¾ùÓÐÄÜÁ¦´¦Àí multipart form ×ÊÁÏ£¨¼´ÉÏ´«£©¡£ 
 
--------------------------------------------------------------------------- 
 
Q2.5: ÎªÊ²÷áÕâ÷á¶à perl CGI libraries ¶¼ÊÇ object-oriented 
£¨Îï¼þµ¼Ïò£©µÄ£¿ 
ÎÒ¶ÔÓÃÎï¼þµ¼ÏòÀ´Ð´³ÌʽһÇϲ»Í¨¡£ÄѵÀ¾ÍûÓмòµ¥Ò»µã£¬¸ø²»»áÎï¼þµ¼ÏòµÄÈËʹÓà
µÄ libraries Âð£¿Îï¼þµ¼ÏòÓжàÄÑ£¿ 
 
ÆäʵʹÓÃÎï¼þµ¼ÏòµÄ modules ²¢²»ÄÑ¡£ÏÈÈ¥¿´¿´ Tom Christiansen µÄ Easy 
Intro 
to Using Perl Objects 
(<http://perl.com/perl/everything_to_know/easy_objects.html>) 
£¨¼òµ¥½éÉÜÈç 
ºÎʹÓàPerl Îï¼þ£©°É¡£ 
 
ǰͷÌáµ½µÄ CGI modules ÓÃÆðÀ´ÕæµÄÊǺÜÈÝÒ×£¡ÕâÀïÓÐÒ»¸öÓàCGI Lite Ó¡³ö 
form 
×ÊÁϵÄʵÀý*£º 
 
     ¡¾ÒëÕß¡¿CGI.pm µÄʹÓÃ˵Ã÷ 
     (<http://www-genome.wi.mit.edu/ftp/pub/software/WWW/>)ÖÐÓиü¶à·¶ 
     Àý¿É¹©²Î¿¼¡£ 
 
     #!/usr/local/bin/perl -w 
     use CGI_Lite; 
     $cgi = new CGI_Lite; 
     %data = $cgi->parse_form_data; 
     print "Content-type: text/plain", "\n\n"; 
     foreach $key (keys %data) { 
         print $key, " = ", $data{$key}, "\n"; 
     } 
     exit 0; 
 
ҪעÒâµÄÊÇ£¬¼´Ê¹Äú»úÆ÷ÉϵĠPerl 
²»ÊÇÄú×°µÄ£¨Äú²»ÊÇϵͳ¹ÜÀíÕߣ©£¬»òÊÇÄúȨÏÞ 
²»¹»ÎÞ·¨½«ÕâЩ modules ºÍÆäËûµÄ Perl library 
µµ°¸°²×°ÔÚͬһ¸öµØ·½£¬Äú»¹ÊÇ 
¿ÉÒÔʹÓÃÕâЩ modules µÄ -- 
Ö»Òª½«ËüÃǰÚÔÚÒ»¸ö×Ô¼º·½±ãµÄµØ·½£¬È»ááÔÚÄúµÄ 
script ¿ªÊ¼´¦¼ÓÉÏ*£º 
 
     BEGIN { 
         unshift @INC, "/your/dir/favorite/place"; 
     } 
 
     ¡¾ÒëÕß¡¿½¨Òé¸ÄÓýÏеķ½Ê½£º 
 
     use lib qw(/your/dir/favorite/place); 
 
ºÃ¡£ÒÔÏÂÊÇÒ»¸öÓõ½ CGI::* modules µÄÀý×Ó£º 
 
     #!/usr/local/bin/perl -w 
     use CGI::Form; 
     $cgi_form = new CGI::Form; 
     print <<'End_of_Header'; 
         <HTML> 
         <HEAD><TITLE>¿´ÖøÎÒ×ö£¡</TITLE></HEAD> 
         <BODY> 
         <H1>¿´ÖøÎÒ×ö£¡</H1> 
     End_of_Header 
     print $form->startform; 
     ## ²úÉúÒ»¸öµ¥ÐÐÊäÈëÀ¸Î» (text field) 
     print 'ÐÕÃû£º '; 
     print $form->textfield('name'), "<BR>\n"; 
     ## ²úÉúÒ»×鵥ѡ°´Å¦ (radio buttons) 
     print '<P>ÄúסÄĶù£º <BR>'; 
     print $form->radio_group(-name      => 'where', 
                              -values    => ['±±ÃÀÖÞ', 
                                             'ÄÏÃÀÖÞ', 
                                             'Å·ÖÞ', 
                                             '°ÄÖÞ', 
                                             'ÑÇÖÞ', 
                                             'Äϼ«ÖÞ'], 
                              -default   => '±±ÃÀÖÞ', 
                              -linebreak => 'true'); 
     ## ²úÉúÒ»¸ö¶àÐÐÊäÈëÀ¸Î» (textarea) 
     print 'Òâ¼û£º '; 
     print $form->textarea('comments', undef, 5, 40); 
     print "<P>"; 
     print $form->reset; 
     print $form->defaults; 
     print $form->submit('Ëͳö£¡', 'Submit'); 
     print $form->endform; 
     print "</BODY></HTML>"; 
 
reset¡¢defaults£¬¼°submitÈýÖÖ·½·¨( methods ) 
»á²úÉú²»Í¬µÄÀàÐ͵İ´Å¥¡£reset 
Õâ¸ö°´Å¥ÈÃÄú°ÑĿǰ form 
À¸Î»ÖÐËùÌîµÄ×ÊÁÏÏ´µô£¬²¢ÏÔʾÊôì¶ÉÏÒ»¸ö״̬£¨»ò»Ø 
ºÏ£©µÄ×ÊÁÏ¡£ defaults Õâ¸ö°´Å¥ÔòÊǽ«form À¸Î»×ÊÁϳ¹µ×Ï´È¥¡£»¹ÓРsubmit 
Õâ 
¸ö·½·¨²úÉúÒ»¸öËͳöÅ¥ÒÔ±ãÈÃÈ˽«×ÊÁÏËÍÖÁ server ´¦¡£ 
 
Äú¿´£¬²»ÊǺÜÈÝÒ×Â𣿠
 
 
 
3.0 - CGI Óë WWW Server 
 
--------------------------------------------------------------------------- 
 
Q3.1: ÎҵĠPerl CGI ³ÌʽҪ·ÅÔÚÄÄÀïÖ´ÐУ¿cgi-bin Õâ¸öĿ¼ÊÇ×öÉõ÷áÓõģ¿ 
 
server Í¨³£ÊÇÉ趨³ÉÈ¥Ö´ÐзÅÔÚ ``cgi-bin'' Ä¿Â¼µ×ϵĠCGI ³Ìʽ¡£²»¹ý£¬ 
server ¹ÜÀíÕßͬʱҲ¿ÉÒÔÔÚÉ趨µµÖÐÉ趨 aliases£¬ÈÃËùÓк¬Ä³Ð©¸±µµÃû£¨Èç 
..cgi 
¡¢.pl£©µÄ scripts ¶¼ÄÜÖ´ÐÐ*¡£ 
 
     ¡¾ÒëÕß¡¿É趨 CGI aliases ºÍ¸±µµÃû¹ÌÈ»ºÜ·½±ã£¬µ« server ¹ÜÀíÕßÐë×¢ 
     Òâµ½Ïà¹ØµÄ°²È«ÎÊÌâ¡£ 
 
--------------------------------------------------------------------------- 
 
Q3.2: Ê²÷áÊǵµ°¸Ê¹ÓÃȨÏÞ£¿ÔõÑù¸Ä£¿ 
 
µµ°¸È¨ÏÞÊǸù¾ÝʹÓÃÕßʶ±ð´úºÅ£¨ÓֳƠ
uid£©£¬ÒÔ¼°ËûÃÇËùÊôµÄÍÅÌåÀ´¾ö¶¨ÊÇ·ñ¸³Óë 
ʹÓÃÕß¶Á¡¢Ð´£¬ºÍÖ´ÐÐijµµ°¸µÄȨÀû¡£Äú¿ÉʹÓàchmod 
Õâ¸öÖ¸ÁîÈ¥Ð޸ĵµ°¸µÄʹÓà
ȨÏÞ¡£ÀýÈ磺 
 
     % ls -ls form.cgi 
       1 -rwx------  1 shishir       974 Oct 31 22:15 form.cgi* 
 
´ËÒ»µµ°¸µÄȨÏÞΪ 
0700£¨°Ë½øÖÆ£©£¬ÒâÎ¶ÖøÃ»ÓÐÈË£¨µµ°¸ËùÓÐÈ˳ýÍ⣩Äܹ»¶ÁÈ¡¡¢ 
д½ø£¬»òÖ´ÐÐÕâ¸öµµ°¸¡£ÎÒÃÇ¿ÉÒÔÓàchmod Õâ¸öÖ¸ÁîÈ¥ÐÞ¸ÄËüµÄȨÏÞ£º 
 
     % chmod 755 form.cgi 
     % ls -ls form.cgi 
       1 -rwxr-xr-x  1 shishir       974 Oct 31 22:15 form.cgi* 
 
ÕâÑùÒ»À´£¬È¨Ï޾ͱäÁË¡£ÏÖÔں͠``shishir'' 
ÔÚͬһ¸öÍÅÌåµÄʹÓÃÕߣ¬»¹ÓÐÆäËûÈΠ
ºÎµÄʹÓÃÕß¶¼ÓÐȨÀûÈ¥¶ÁÈ¡ºÍÖ´ÐÐÕâ¸öµµ°¸ÁË¡£ 
 
ÈçÓûÖª chmod Ö¸Áî¸÷°Ë½øÖÆÊýÂëËù´ú±íµÄº¬Ò⣬Çë²ÎÔÄ chmod 
manpagesµÄ˵Ã÷¡£ 
 
--------------------------------------------------------------------------- 
 
Q3.3: Perl Ó¦¸Ã°²×°ÔÚÄÄÀï²Å¿ÉÒÔÖ´ÐÐËü£¿ 
 
Perl ¿ÉÒÔ°²×°ÔÚϵͳÉÏÈκÎÒ»¸ö½ÇÂ䣡ÄúΨһҪעÒâµÄÊÇ server 
²»ÄÜÔÚchroot µÄ 
»·¾³ÏÂÅÜ£¬·ñÔòËü±ãÎÞ·¨ÅÜ perl 
½âÒëÆ÷¡£»»ÑÔÖ®£¬ÏµÍ³¹ÜÀíÕß¿ÉÒ԰ѸùĿ¼¸Ä±ä£¬ 
Èà``/'' Ö¸µ½ÁíÒ»¸öĿ¼£¬¶ø²»ÊÇʵ¼ÊÕæÕýµÄ¸ùĿ¼(``/'')¡£ 
 
--------------------------------------------------------------------------- 
 
Q3.4: ÎÒΪʲ÷áÒ»Ö±µÃµ½ ``Server: Error 500'' µÄѶϢ£¿ 
 
ÒÔϼ¸ÖÖÇéÐλᴥ·¢Õâ¸ö´íÎóѶϢ£º 
 
   * Èç¹û script ¿ªÍ·µÄµØ·½Ã»ÓР``#!/usr/local/bin/perl'' Õâ¸öÖ¸µ½ 
Perl ½â 
     ÒëÆ÷µÄ±êÍ·£¬»òÕßÊÇÖ¸µ½½âÒëÆ÷£¨»ò library µµ£©µÄ·¾¶´íÎó¡£ 
   * Èç¹û script Êä³öµÄµÚÒ»ÐÐÊÇÒ»¸ö²»ÕýÈ·µÄ±êÍ·£¨¼´ ``Content-Type: 
     text/html'' £©£¬»òÕßÊǸñêÍ·ááÃæÃ»ÓиúÖøÒ»¸ö¿ÕÐС£ 
   * Èç¹ûÄúµÄ script Óо䷨ÉϵĴíÎó¡£ÄúµÄ scripts 
¶¼Ó¦ÔÚÖ¸ÁîÁÐÏÈÅÜÅÜ¿´²Å 
     ÊÇ¡£ 
 
--------------------------------------------------------------------------- 
 
Q3.5: ÎÒÊÔÖø´ò¿ªÒ»¸öµµ°¸£¬Ïë°Ñ×ÊÁÏ´¢´æÔÚÀïÍ·£¬µ«ÊÇ open() 
µÄÖ¸Áîʧ°ÜÁË¡£µ½ 
µ×ÊÇÔõ÷á¸ãµÄ£¿ 
 
Ò»°ã˵À´£¬HTTP server ÊÇÒÔ 
``nobody''¡¢``www''£¬»òÆäËûÕâÀàȨÏ޵͵ÄʹÓÃÕߵĠ
Éí·ÝÀ´Åܵġ£ÒòΪÕâ¸öÔµ¹Ê£¬Äú´òËãÔÚÆäÖÐÖÆÔìеµ°¸µÄĿ¼£¬¶Ô server 
ÅܵÄʹÓà
Õß ID ±ØÐëÒªÊÇ¿Éд(writable)²ÅÐС£ 
 
ΪÁËÈ·¶¨Æð¼û£¬Äúÿ´Î¶¼Ó¦¸ÃÏȼì²é open Õâ¸öÖ¸ÁîËͻصĽáÊø×´Ì¬(return 
status 
)£¬¿´¿´ open ÓÐûÓгɹ¦¡£ 
 
     open(FILE, "/abc/data.txt") 
         || error("Could not open file /abc/data.txt"); 
             . 
             . 
             . 
     sub error { 
         my($message) = @_; 
 
         print <<End_of_Error; 
     Content-type: text/html 
     Status: 500 CGI Error 
     <HTML> 
     <HEAD><TITLE>CGI Error</TITLE></HEAD> 
     <BODY> 
     <H1>Oops! Error</H1> 
     <HR> 
     $message 
     <HR> 
     </BODY> 
     </HTML> 
     End_of_Error 
     } 
 
 
 
4.0 £­³ÌʽÉè¼ÆÒÉÄÑÔÓÖ¢ 
 
--------------------------------------------------------------------------- 
 
Q4.1: ÎÒÏëÈàuser ÌîµÄ form ×ÊÁÏ×Ô¶¯¼Ä¸øÎÒ£¬¸ÃÔõ÷á×ö£¿ÓÐûÓз¶Àý£¿ 
 
Æäʵ×öÕâ¸öºÜÈÝÒס£ÄúµÄ CGI script ±ØÐëÄÜ×öµ½ÕâÁ½¼þÊ£º 
 
  1. ½« form ÖеÄ×ÊÁÏÕûÀí³öÀ´¡£±ðÍüÁË£¬ËùÓеĠform ×ÊÁ϶¼»á±» 
URL-±àÂëÆðÀ´ 
     £¨ÏȲ»¿¼ÂÇ Netscape 2.0 ¡¾¼° 2.0 ÒÔÉÏËùÖ§Ô®¡¿µÄ multipart 
MIME×ÊÁÏ£©¡£ 
  2. ¿ªÒ»¸ö¹Ü· (pipe) µ½ mail £¨»ò sendmail £©£¬È»áá°Ñ form 
×ÊÁÏд¹ýÈ¥¡£ 
 
     ÎÒÃǾͼÙÉèÄúÓõÄÊÇ CGI::* Ä£×é¡£Äú¿ÉÓÃÒÔÏµķ½·¨È¥½Ð sendmail£º 
 
          $cgi_form = new CGI::Form; 
          $from     = $cgi_form->param('from'); 
          $name     = $cgi_form->param('name'); 
          $to       = $cgi_form->param('to'); 
          $subject  = $cgi_form->param('subject'); 
          $message  = $cgi_form->param('message'); 
          open SENDMAIL, "| /usr/bin/sendmail -t -n"; 
          print SENDMAIL <<End_of_Mail; 
          From: $from <$name> 
          To: $to 
          Reply-To: $from 
          Subject: $subject 
          $message 
          End_of_Mail 
 
     ÓÐÒ»¸ö¸Ã×¢ÒâµÄµØ·½ÊÇ ``Reply-To:'' µÄÐÅÍ·¡£ÓÉì¶ server ÊÇÒÔ 
``nobody'' 
 
Õâ¸öʹÓÃÕßµÄÉí·ÝÀ´ÅÜ£¬ÐÅÍ·µÄµØ·½¿ÉÄܻᱻ¸ã»µ£¨ÓÈÆäÊǵ±ÓÐÈËÏë»ØÕâ·âÐÅ 
     µÄʱáᣩ¡£¼ÓÉÏ ``Reply-To'' µÄÐÅÍ·Õâ¸öÎÊÌâ±ã½â¾öÁË¡£ 
 
     ÍøÂ·ÉÏÓÐÐí¶àµÄ mail ÇþµÀ (gateway)* ÊÇÒÔµ×ÏÂÕâÖÖ·½·¨À´ËÍ mail£º 
 
          ¡¾ÒëÕß¡¿gateway ÔÚ´ËÖ¸ËÍ email µÄ CGI ³Ìʽ 
 
          open MAIL, "| mail -s 'Subject' $to"; 
                                            ^ 
                                            | 
                                            +-- 
¿ÉÄÜ»á³öÎÊÌâµÄ©¶´£¡£¡£¡ 
 
     Èç¹ûÄúûÓÐÏȼì²é¿´ $to Õâ¸ö±äÊýÓÐûÓÐÄÚº¬ shell µÄÌØÊâ·ûºÅ 
     (metacharacters)£¬ÄúÊÇÔÚ×ÔÌÖ¿à³Ô£¡Æ©È磬Èç¹ûÄĸö¶ñÁӵĠuser 
ÊäÈëÁËÒÔÏ 
     µÄ×ÊÁÏ£º 
 
          ; rm -fr / ; 
 
     ÄÇ÷áÄúµÄÂé·³¿É´óÁË*¡£ 
 
          ¡¾ÒëÕß¡¿ÕâÀïÍ·µÄ ``;'' ±ãÊÇÒ»¸öΣÏյĠshell metacharacter¡£ 
          ÁíÒ»¸öΣÏյķûºÅÊÇ ``&''¡£ 
 
          ÔÚÕâ¸ö¼ÙÏëµÄÇé¿öÖУ¬ÓжàÉÙ¸öµµ°¸»á±»Ô¶·½µÄ user ¸øÉ±µô£¬»¹µÃ 
          ÊÓ server ÅܵÄʹÓÃÕßµÄȨÏÞ¶ø¶¨£¨Õâ¾ÍÊÇΪʲ÷á server ÒªÒÔµÍȨ 
          ÏÞʹÓÃÕßÉí·ÝÅܵÄÔ­Òò£©¡£ÖÁÉÙÄÇЩÓÉ CGI ³ÌÊ½ÖÆÔì³öÀ´£¬µ«ÓÖû 
          Óб¸·ÝµÄµµ°¸£¬ÊÇÕæµÄÒª¸úËüÃÇÓÀ±ðÁË¡£ 
 
               ; mail joe@crackerland.org </etc/passwd 
 
          ÄÇÄúµÄ CGI script ¾ÍÌæÄú°Ñ /etc/passwd ¸ø¹°ÊÖËÍÉÏÁË¡£Õâ¶ÔÒ» 
          ¸ö¡¸Î´¼Ó¹¤¡¹µÄ Linux¡¢SunOS 4.1£¬»¹ÓÐÆäËûÈκÎû°²×° 
          shadow-password µÄ UNIX ÏµÍ³À´Ëµ£¬ÊµÔÚ²»Ì«ºÃÍæ¡£Èç¹û server 
          ´íÎóµØÅÜÁË root£¬ÄÇ÷á¾ÍËã×°ÁË shadow-password Ò²Ã»ÓÐÓã¬ÒòΪ 
          Ô¶·½µÄ cracker ÉõÖÁ¿ÉÒÔÈÃÕâ¸ö CGI µÄ email script ¸øËûËÍ 
          /etc/shadow £¨ÊÓϵͳ¶ø¶¨£¬²»Ò»¶¨ÔÚ /etc µ×Ï»ò½ÐÕâ¸öÃû×Ö£©¡£ 
 
 
---------------------------------------------------------------------- 
 
     Q4.2: ¸Õ²ÅÕâ¸öÓàform ËÍÐŵĠscript ¿´ÆðÀ´ÓеãÄÑ¡£ÎªÊ²÷᲻Ǭ´àÓà
     `` URL''£¬ÕâÑù user ÌîÈëµÄ×ÊÁϾͿÉÒԼĸøÎÒÁË£¿ 
 
     ºÜ²»Ðҵأ¬ 
µÄÖ¸Áî²¢²»ÊÇËùÓеÄä¯ÀÀÆ÷¶¼Ö§Ô®¡£Èç¹ûÄúÔÚµµ°¸ÖÐÓÃÁËËü 
     µÄ»°£¬»áÏÞÖÆÁËÄÇЩʹÓÃûÓÐÖ§Ô®  µÄä¯ÀÀÆ÷µÄÈË£¬ÈÃËûÃÇÎÞ·¨ËÍ 
     mail ¸øÄú*¡£ 
 
          ¡¾ÒëÕß¡¿¾¡¹ÜÈç´Ë£¬Äú»òÐí²»»áÔÚºõÄÇÕ¼¼«ÉÙÊý±ÈÀýµÄʹÓÃÕß 
          £¨Netscape ¡¢ IE£¬ºÍ lynx µÈä¯ÀÀÆ÷¶¼Ö§Ô®  £©¡£ 
 
 
---------------------------------------------------------------------- 
 
     Q4.3: ÎÒÒªÈçºÎÔÚ UNIX ÒÔÍâµÄƽ̨ÉÏ×ö Perl-CGI£¬Æ©Èç Mac¡¢MS-DOS¡¢ 
     Windows ¼° NT£¿ÎҵĠPerl CGI 
³ÌʽÄܲ»ÄÜÔÚÕâЩƽ̨֮¼ä»¥ÏàÒÆÖ²ÄØ£¿Äܲ» 
     ÄܺÜÖ±½Ó£¬Ã»ÓÐÂé·³£¿ÎÒÔÚ UNIX Ö÷»úÉÏÓÐÕʺţ¬µ«ÊǶ¼ÊÇÏÈÔÚ 
Windows/Mac 
     ÉÏ×ö¡£ÎÒÒªÈçºÎÔÚÎÒ×Ô¼ºµÄ»úÆ÷ÉϲâÊÔдºÃµÄ CGI scripts*£¿ 
 
     Perl ÒѾ­±»ÒÆÖ²µ½ÉÏÊöËùÓÐµÄÆ½Ì¨ÉÏÁË¡£Òò´Ë£¬ÄúµÄ Perl CGI 
³ÌʽÕÕÀíÓ¦²» 
     ÄÑÒÆÖ²¡£µ«Èç¹ûÄúʹÓõ½Ò»Ð© UNIX 
ÉϵijÌʽ£¬ÄÇ÷áÄúµÄ³Ìʽ¿ÉÄܻ᲻ºÃÒÆ 
 
Ö²¡£Èç¹ûÄúÖ»ÊÇ×ö×ÊÁÏ´¦Àí£¬»ò¿ªÆô¡¢¶Á½øµµ°¸µÈµÄ»°£¬ÄÇ÷áÒÆÖ²Ó¦¸Ã²»»áÓР
     ÎÊÌâ¡£ 
 
          ¡¾ÒëÕß¡¿Ô­ FAQ ²¢Î´»Ø´ð×îááÕâ¸öÎÊÌâ¡£ÒªÔÚ Windows/OS2/Mac µÈ 
          ·Ç UNIX Æ½Ì¨ÉϲâʽÄúµÄ scripts £¬Äú¿ÉÒÔʹÓàCGI.pm £¨Ö§Ô®ÒÔ 
          ÉÏËùÓÐÆ½Ì¨£©£¬ÅäºÏ Q4.19 ÖÐÌáʾµÄ³ý´í¼¼ÇÉ£¬»òÔÚ×Ô¼ºµÄ»úÆ÷ÉÏ 
          °²×° HTTP server ÈíÌå¡£Èç´Ë¾Í²»ÓÃÐÁ¿àµÄÁ¬ÉÏÖ÷»úÈ¥²âʽÁË¡£ 
 
 
---------------------------------------------------------------------- 
 
     Q4.4: ÔÚ Perl CGI ³ÌʽÖУ¬STDERR £¨±ê×¼´íÎóѶϢ)¡¢STDIN 
(±ê×¼ÊäÈ룩£¬ 
     ºÍ STDOUT £¨±ê×¼Êä³ö£©¸÷ÊÇÁ¬µ½ºÎ´¦£¿ 
 
     ÔÚ CGI »·¾³Ï£¬STDERR »áÖ¸Ïò server µÄ´íÎóѶϢµµ (error 
log)¡£Äú¿ÉÒÔ 
     ÉƼÓÀûÓÃÕâ¸öÌØÐÔ£¬°Ñ³ý´íµÄѶϢдµ½ 
STDERR£¬È»ááÄú±ã¿É½å²é¿´´íÎóѶϢµµ 
     À´°ïÄú³ý´í¡£ 
 
     STDIN ºÍ STDOUT Ôò¶¼ºÍä¯ÀÀÆ÷ÏàÁ¬¡£Êµ¼ÊÉÏ£¬STDIN Á¬µÄÊÇ server¡£ 
server 
     »áÏȽâ¶Á client £¨»òä¯ÀÀÆ÷£©ËͳöµÄÇëÇóºÍ×ÊÁÏ£¬ÔÙ½«ÆäË͸ø script¡£ 
 
     ÄúÒ²¿ÉÒÔÓý« STDERR ¡¸¸´ÖÆ¡¹µ½ STDOUT 
µÄ·½·¨À´×¥´íÎóѶϢ¡£ÕâÓ¦¸ÃÔÚ 
     script ¿¿Ç°Í·µÄµØ·½×ö£¨µ«Ó¦ÔÚÄúÊä³öºÏÊʵĠHTTP ±êÍ·Ö®áᣩ£º 
 
          open STDERR, ">&STDOUT"; 
 
     Õâ»á½«ËùÓеĴíÎóѶϢ¶¼×ªË͵½ STDOUT £¨¼´ä¯ÀÀÆ÷£©È¥¡£ 
 
 
---------------------------------------------------------------------- 
 
     Q4.5: ÈçºÎд¼ÆÊýÆ÷£¿ 
 
     ¼ÆÊýÆ÷Ò»ÀàµÄ³ÌʽÏ൱Á÷ÐС£Æäʵ¼ÆÊýÆ÷µÄÔ­ÀíºÜ¼òµ¥£¬²»¹ýÊÇ£º 
        o ÓÃÒ»¸öµµ°¸È¥´¢´æ×ÊÁÏ¡£ 
        o Ã¿µ±ÓÐÈ˹âÁÙÍøÕ¾£¬Ôö´óµµ°¸ÖÐËù¼ÆµÄÊý×Ö¡£ 
 
     ÒÔÏÂÊÇÒ»¸ö¼òµ¥µÄ¼ÆÊýÆ÷µÄʵÀý£º 
 
          #!/usr/local/bin/perl -w 
          $counter = "/home/shishir/counter.dat"; 
          print "Content-type: text/plain", "\n\n"; 
          open(FILE, $counter) || die "Cannot read from the counter 
file.\n"; 
          flock FILE, 2; 
          $visitors = <FILE>; 
          flock FILE, 8; 
          close FILE; 
          open(FILE, ">$counter") || die "Cannot write to counter 
file.\n"; 
          flock FILE, 2; 
          print FILE $visitors; 
          flock FILE, 8; 
          close FILE; 
 
     ÏÖÔÚÄú¿ÉÒÔÔÚ HTML µµ°¸ÖÐÓàSSI (Server Side Include; ËÅ·þ¶Ë²åÈë)* 
µÄ·½ 
     Ê½À´ÏÔʾ¸Ã¼ÆÊýÆ÷£º 
 
          ¡¾ÒëÕß¡¿SSI ÊÇ server ËùÌṩµÄÒ»ÏÄÜ£¬¿É½«¶¯Ì¬×ÊÁÏ£¬ÀýÈçÈÕ 
          ÆÚºÍʱ¼ä£¬»ò¼ÆÊýÆ÷ÏÔʾµÈ£¬ÔÚ¿Í»§ÇëÇóÒ»ÍøÒ³Ê±¼´Ê±¼ÓÈë¸ÃÎļþ 
          ÖС£Ö§Ô® SSI µÄ servers °üÀ¨ÁË NCSA 
          (<http://hoohoo.ncsa.uiuc.edu>)¡¢Apache 
          (<http://www.apache.org/>)£¬ºÍNetscape Enterprise Server 
 
(<http://home.netscape.com/comprod/server_central/product/enterprise/>) 
          µÈ¡£ SSI ¹ÌÈ»ÊÇÒ»Ïî±ãÀûµÄÉè¼Æ£¬µ«Èç¹ý·ÝÀÄÓ㬲»µ«»á¼õµÍ 
          server ÐÔÄÜ£¬¸ü¿ÉÄÜÕÐÀ´°²È«ÉϵÄΣ»ú¡£ 
 
          ÄúÊǵڠ
          <!--#exec cgi="/cgi-bin/counter.pl--> 
          Î»¹âÁÙ±¾Õ¾µÄ¿ÍÈË¡£ 
 
 
---------------------------------------------------------------------- 
 
     Q4.6: ÒªÈçºÎÓÃÒ»¸ö Perl µÄÈ¡´úÖ¸ÁËùÓРHTML 
±êÇ©´ÓÒ»·ÝÎļþÖÐɾ³ý£¿ 
 
     ÒÔÏÂÕâ¸ö¼òµ¥µÄ regular expression ¿ÉÓÃÀ´È¥³ý HTML ±êÇ©*£º 
 
          ¡¾ÒëÕß¡¿ 
            1. ÒªÈÃÕâ¸ö regular expression ¿çÐÐÖ´ÐУ¬Äú±ØÐëÏȽ«ÄúµÄ 
               script ÓÉÔ¤ÉèµÄ°´ÐÐÖ´ÐÐģʽ (line mode) ¸ÄΪ°´¶ÎÖ´ÐÐÄ£ 
               Ê½ (paragraph mode)¡£Äú¿ÉÒÔÔÚÖ¸ÁîÁÐÒÔ£º 
 
               perl -00 -we '...' 
 
               µÄ·½Ê½£»»òÊÇÔÚ script ÖÐÒÔ£º 
 
               #!/usr/bin/perl -00 
 
               »ò 
 
               $/ = ""; 
 
               µÄ·½Ê½À´É趨°´¶ÎÖ´ÐÐģʽ¡£ 
            2. ³ý·ÇÄúÐèÒª¶ÔÓûɾ³ýµÄ HTML ±êÇ©ÖеÄÄÚÈÝ×ö½øÒ»²½µÄ´¦Àí»ò 
               ÀûÓ㬷ñÔò±¾ÀýÖÐ×îÍâΧµÄÒ»¶ÔÀ¨»¡¿ÉÈ¥µô¡£ 
 
          $line =~ s/<(([^ >]|\n)*)>//g; 
 
     ÏêϸµÄÏà¹Ø×ÊÁÏ£¬Çë¿´ Tom [Christiansen] µÄ striphtml ³Ìʽ 
 
(<ftp://perl.com/perl/scripts/striphtml>)£¬Õâ¸ö³ÌʽͬʱҲÊÕ¼ÔÚËûµÄ 
     tour of perl5 regexps 
(<http://perl.com/perl/all_about/regexps.html>) 
     ½²ÒåÖС£ 
 
 
---------------------------------------------------------------------- 
 
     Q4.7: ÒªÈçºÎÖªµÀÊÇË­£¯ÄĄ̈»úÆ÷£¯Äĸöä¯ÀÀÆ÷Ö´ÐÐÁËÎҵijÌʽ£¿ 
 
     Äú¿ÉÒÔ´Ó HTTP_USER_AGENT Õâ¸ö»·¾³±äÊýµÃ֪ʹÓÃÕßËùÓõÄä¯ÀÀÆ÷¡£ 
 
     ¡¾Õª×Ô WWW FAQ¡¿ 
 
     ÄúµÄ CGI script 
¿ÉÒÔÀûÓÃÎå¸öÖØÒªµÄ»·¾³±äÊýÀ´°ïæ±æÊ¶Ê¹ÓÃÕßµÄÉí·Ý¡£ 
 
        * HTTP_FROM 
Õâ¸ö»·¾³±äÊýÀíÂÛÉÏÓ¦ÉèΪʹÓÃÕßµÄemailµØÖ·¡£µ«ÊÇÐí¶àä¯ÀÀ 
 
Æ÷ÍêÈ«²»¼ÓÒÔÉ趨¡¾¼´²»Ö§Ô®¡¿£¬¶ø´ó²¿·ÝÖ§Ô®Õâ¸ö±äÊýµÄä¯ÀÀÆ÷ÓÖÈÃʹ 
          ÓÃÕß×ÔÓÉÉ趨Õâ¸öÖµ¡£Òò´Ë£¬½¨Òé¶ÁÕß¶¥¶àÄÃËüÀ´×öΪ email form 
Öлؠ
          ÐŵØÖ·µÄÔ¤ÉèÖµ¡£ 
 
        * REMOTE_USER Õâ¸ö±äÊýΨÓе± script 
ÔÚ°²È«ÈÏÖ¤µÄ±£»¤ÏÂÖ´ÐÐʱ²Å»á±» 
          É趨¡£´Ó AUTH_TYPE 
Õâ¸ö±äÊý¿ÉÒÔÖªµÀËùÓõÄÈÏÖ¤·½·¨ÊÇÊôì¶ÄÄÒ»¸öÀà 
          ÐÍ¡£REMOTE_USER 
Ôò»áº¬ÓÐÕý½ÓÊÜÈÏÖ¤µÄʹÓÃÕßµÄÃû×Ö¡£Òª×¢ÒâµÄÊÇ£¬ 
          REMOTE_USER 
Ö»ÓÐÔÚʹÓð²È«ÈÏÖ¤µÄʱºò²Å»á±»É趨£¬¶øÇÒ²»ÊÇËùÓеĠ
          servers ¶¼Ö§Ô®¡£ÔÚ NCSA server 
µ×Ï£¬Èç¹ûÈÏÖ¤ËùʹÓõĴ«Ê䷽ʽû 
          ÓÐÁÐÈë access.conf µµÖÐ(Ò²¾ÍÊÇ˵£¬Ó¦Ê¹Óà<Limit GET 
POST>£¬¶ø²»ÊÇ 
          ½ö½öÓÃÔ¤ÉèµÄ <Limit GET>)£¬ÈÏÖ¤¿ÉÄÜ»á³öÈËÒâÍâµØÊ§°Ü¡£ 
 
        * REMOTE_IDENT Èç¹û server ÄÜÁ¬½ÓÉϿͻ§¶ËµÄ IDENT 
server£¬Ëü»á½«Õâ 
          ¸ö±äÊýÉè³ÉÔ¶·½Ê¹ÓÃÕßµÄÉí·Ý¡£µ«ÓÉì¶ÏòIDENT server 
²éѯµÄ¶¯×÷Ì«»¨ 
          Ê±¼ä£¬´ó²¿·ÝµÄ servers 
¶¼°ÑÕâÏÄܹصô¡£¸üºÎ¿ö£¬¿Í»§¶ËµÄ»úÆ÷ÊÇ 
          ·ñ»á»ØÓ¦²éѯ£¬ÓÖÊÇ·ñ»á³ÏʵÒÔ¶Ô£¬¶¼ÊÇÎÞ·¨È·¶¨µÄ¡£ 
 
        * REMOTE_HOST 
        * 
Õâ¸ö±äÊýµÄÉ趨ֵ²¢²»°üÀ¨Ô¶¶ËʹÓÃÕßµÄÕæÊµÉí·Ý£¬µ«ÊÇ»áÌṩʹÓÃÕßÕý 
          ÓÃÀ´Á¬ÏߵĻúÆ÷Ãû³Æ£¬Ö»Òª server 
ÄÜÕҵóöÀ´¡£ÓÉì¶ÎÒÃÇÎÞ·¨È·ÇеÃÖª 
 
ʹÓÃÕßµÄÕæÊµÉí·Ý¡¾Ç뿴ǰһ¸ö»·¾³±äÊýµÄ˵Ã÷¡¿£¬ÓеÄʱºòʹÓÿÉÈ·ÈÏ 
          µÄλַÀ´Ìæ´ú£¬²»Ê§ÎªÒ»¸ö¿ÉÐеıäͨ·½·¨¡£ÔÚ server 
²é²»µ½Ô¶¶ËµÄ»ú 
          Æ÷Ãû³Æ£¬»òÕßÊÇΪÔö¼Ó server 
µÄ´¦ÀíËٶȶø½«Õâ¸ö²éѯ¹¦ÄܹصôµÄÇé¿ö 
          Ï£¬Õâ¸ö±äÊýÊǿյģ»Çë¿´µ×Ï REMOTE_ADDRESS 
Ò»ÏîµÄ˵Ã÷¡£»¹ÓУ¬±ð 
          ÍüÁËÄú¿ÉÄܻᷢÏÖËùÓÐʹÓÃͬһ¸ö proxy £¨´úÀíÈË£© server 
µÄʹÓÃÕߵĠ
          »úÆ÷Ãû¶¼±ä³ÉÁËÄÇ̨ proxy server µÄÃû×Ö¡£ 
 
        * REMOTE_ADDR 
Õâ¸ö±äÊýµÄÉ趨ֵ²¢²»°üÀ¨Ô¶¶ËʹÓÃÕßµÄÕæÊµÉí·Ý£¬µ«ÊÇ»á 
          ÌṩʹÓÃÕßÕýÓÃÀ´Á¬ÏߵĻúÆ÷µÄ×ÊÁÏ¡£REMOTE_ADDR »á°üº¬¿Í»§¶ËµÄ 
IP 
 
λַ£¬ÒÔÓõã¸ô¿ªµÄÊ®½øÎ»Êý×ÖµÄÐÎʽÀ´±íʾ¡£ÓÉì¶ÎÒÃÇÎÞ·¨È·ÇеÃ֪ʹ 
          ÓÃÕßµÄÕæÊµÉí·Ý 
[Ç뿴ǰһ¸ö»·¾³±äÊýµÄ˵Ã÷]£¬ÓеÄʱºòʹÓÿÉÈ·ÈϵĠ
          Î»Ö·À´Ìæ´ú£¬²»Ê§ÎªÒ»¸ö¿ÉÐеıäͨ·½·¨¡£ºÍǰһÏî REMOTE_HOST 
²»Í¬ 
 
µÄÊÇ£¬Õâ¸ö±äÊýÒ»¶¨»á±»É趨¡£»¹ÓУ¬±ðÍüÁËÄú¿ÉÄܻᷢÏÖËùÓÐʹÓÃͬһ 
          ¸ö proxy £¨´úÀíÈË£© server µÄʹÓÃÕߵĻúÆ÷λַ¶¼±ä³ÉÁËÄÇ̨ 
proxy 
          server µÄλַ¡£ 
 
     ¡¾ÕªÂ¼×Ô WWW FAQ ²¿·ÝÍê¡¿ 
 
 
---------------------------------------------------------------------- 
 
     Q4.8: È˼ҿ´µÃµ½ÎҵĠPerl CGI 
³ÌʽÂð£¿Èç¹ûÊÇÕâÑùµÄ»°£¬ÄDz»¾ÍÈÃËûÃÇÖªµÀ 
     ÎҵijÌʽÊÇÔõ÷áÔË×÷µÄÁË¡£ÕâÊǸö°²È«Â©¶´Âð£¿ÎÒÒªÔõ÷á°ÑËüÒþ²ØÆðÀ´£¿ 
 
     Èç¹ûÄú½«ÄúµÄ server Éè³É¶ÔËùÓÐÔÚÒ»¸öÌØ¶¨Ä¿Â¼£¨Èç 
cgi-bin£©Ïµĵµ°¸£¬»ò 
     ÕßÊǾßÓÐijЩ¸±µµÃû£¨Èç ``.pl''¡¢``.tcl''¡¢``.sh''£©µÄµµ°¸Ò»Âɶ¼ÒÔ 
CGI 
     ³Ìʽ¿´´ý£¬ÄÇ÷á server Ö»»áÖ´ÐÐÕâЩ³Ìʽ¡£ÖÁì¶Ê¹ÓÃÕßÊÇÎÞ·¨¿´µ½ 
script 
     ±¾ÉíµÄÄÚÈݵġ£ 
 
     µ«ÊÇÈç¹ûÄúÔÊÐíÈËÃÇ¿´ÄúµÄ script (Æ©Èç°ÑËü·Åµ½ HTML 
ÎļþµÄ¸ùĿ¼ÏÂ)£¬ 
 
ÄÇ÷áÖ»ÒªÊÇÕâ¸ö³ÌʽûÓа²È«ÉϵÄ©¶´£¬Õâ²¢²»ÄÜËãÊǰ²È«ÎÊÌâ¡£Èç¹ûÕâ¸ö³Ì 
 
Ê½ÕæµÄÓа²È«ÉÏµÄÆÆÕÀ¶øÄúÓÖÔÊÐíʹÓÃÕß¿´Õâ¸ö³Ìʽ£¬ÄÇ÷áËûÃDZãÓлú¿É³Ë£¬ 
     ½ø¶øÀûÓÃÕâ¸öÈõµã¡£ 
 
          ¡¾ÒëÕß¡¿ÉÏÃæÕâ¶ÎÔ­ÎÄ×÷ÕßÊǾÍÔ¶·½µÄ¿Í»§¶ËµÄʹÓÃÕß¶øÑÔ¡£ºÍÕâ¸ö 
          Ö÷ÌâÏà¹ØµÄÒ» ¸ö³£ÎÊÎÊÌâÊÇ£º 
 
          Q: ÎҵĠPerl CGI scripts 
±ØÐ뽫ȨÏÞÉèΪȫÊÀ½ç¿É¶Á¡£¿ÉÊÇÕâÑùÒ» 
          À´£¬ºÍÎÒͬ 
»úÆ÷ÓÐÕÊ»§µÄÈË£¬Ö»ÒªÖªµÀÎҵijÌʽÃû³Æ£¬¾Í¿ÉÒÔä¯ÀÀÎÒ 
          µÄ Perl ³ÌʽµÄÄÚÈÝ£»ÓÈ Æäµ±ÆäÖÐÇ£Éæµ½ÃÜÂëµÄÎÊÌâʱ¡£ 
 
          A: ÖÁÉÙÓÐÁ½¸ö½â¾ö·½·¨£¬Ò»¸ö¼òµ¥£¬Ò»¸ö¸´ÔÓ£º 
 
          ¼òµ¥µÄ·½·¨ÊÇ£¬ÇëÄúµÄϵͳ¹ÜÀíÕߣ¨Èç¹û²»ÊÇÄú×Ô¼ºµÄ»°£©£¬½«ÄúµÄ 
          CGI scripts ¼°ÃÜÂëµµ£¨Èç¹ûÄúÑ¡Ôñ½«ÃÜÂë´æ·ÅÔÚÁíÒ»¸öµµ°¸ÖеĠ
          »°£©µÄËùÓÐÕßÉè³É Web server ÅܵÄʹÓÃÕߣ¨×î³£¼ûµÄÊÇʹÓÃÕß 
          nobody £»Ê¹ÓÃȺ nogroup »ò nobody£©£¬ È»áὫ CGI scripts 
µÄʹ 
          ÓÃȨÏÞÉ趨³É 550 (-r-xr-x---)£¬ÃÜÂëµµµÄȨÏÞÉè³É 440 
          (-r--r-----)¡£Èç´ËÒ»À´£¬Ò»·½ÃæÄúµÄ³ÌʽµÃÒÔÖ´ÐУ¬¶øÇÒÆäËûͬ»ú 
          Æ÷ÉϵĠʹÓÃÕßҲûÓа취͵¿´µ½ÄúµÄ³ÌʽºÍÃÜÂë¡£ 
 
          ±È½Ï¸´ÔӵĽâ¾ö·½·¨ÊÇÏÈÌô¸öÄÑÆÆµÄÃÜÂ뽫Õû¸ö³Ìʽ¼ÓÃÜÆðÀ´£¬È»áá 
          ÔÙʹÓàFilter::decrypt Õâ¸öÄ£×éÔÚÁÙÖ´ÐÐǰ½«Æä½â¿ª£¬Ôڴ˲»¶à 
          Ëµ¡£ÓÐÐËȤµÄ¶ÁÕßÇë¿´ Filter::decrypt µÄʹÓÃ˵Ã÷£»´ËÍâеĠ
          perl FAQ µÚÈý²¿·ÖÖÐÕâÒ»¶Î£º``How can I hide the source for 
my 
          Perl program?'' £¬´ó¼ÒÒ²¿É²Î¿¼¡£ 
 
 
---------------------------------------------------------------------- 
 
     Q4.9: ÎÒÐèÒª½«Õû¸ö Perl library ¶¼¸´ÖƵ½ÎҵĠhtdocs Ä¿Â¼µ×ÏÂÂ𣿠
 
     ²»ÐèÒª¡£ÄúµÄ CGI scripts ¿ÉÒÔʹÓàserver 
ºÍÎļþ¸ùĿ¼֮ÍâµÄÈκεµ°¸£¬ 
     ³ý·Ç server ÊÇÔÚÒ»¸ö chroot µÄ»·¾³ÏÂÖ´ÐС£ 
 
 
---------------------------------------------------------------------- 
 
     Q4.10: 
ÎÒΪʲ÷á²»¸Ã½ÐʹÓÃÕßÊäÈëËûÃǵÄÃÜÂë»òÉí·ÝÖ¤×ֺŻòÐÅÓÿ¨ºÅÂ룿ÓР
     Ò»¸ö TYPE="password" ²»ÊǾÍÊÇÄÃÀ´×öÕâ¸öµÄÂ𣿠
 
     No! form µÄ½éÃæÖÐÓÐÒ»¸ö ``password'' 
µÄÀ¸Î»£¬µ«ÊÇÄú²»Ó¦¸ÃÄÃËüÀ´´¦ÀíÈΠ
     ºÎ»úÃÜÐÔµÄ×ÊÁÏ¡£²»¸ÃÕâ÷á×öµÄÔ­ÒòÊÇÒòΪËùÓеĠform ×ÊÁÏ(°üÀ¨ 
     ``password'' À¸) ¶¼ÊÇÒÔ´¿ÎÄ×ÖÐÎʽ£¬¶ø·ÇÒÔ¼ÓÃÜÐÎʽÓÉä¯ÀÀÆ÷ËÍÖÁ 
server¡£ 
 
     Èç¹ûÄúÏëÒª°²È«µØ´«ËÍ×ÊÁÏ£¬ÄÇ÷áÄúÐèҪʹÓþßÓа²È«¹¦ÄܵĠ
server£¬ÀýÈç 
     Netscape µÄ Commerce Server 
 
(<http://home.netscape.com/comprod/products/iapps/platform.html>)*¡£ 
 
          ¡¾ÒëÕß¡¿Apache SSL £¬ÀýÈç Stronghold °æ 
          (<http://stronghold.c2.net>)£¬Í¬Ñù¾ßÓÐÕâ¸ö¹¦ÄÜ¡£ 
 
 
---------------------------------------------------------------------- 
 
     Q4.11: ÎÒÒªÈçºÎ²úÉúרÃÅÌæ Netscape 
Éè¼ÆµÄÍøÒ³£¬ÒÔ±ðì¶ÊÀÉÏÆäËûµÄä¯ÀÀ 
     Æ÷£¿ 
 
     Äú¿ÉÒÔ͸¹ý HTTP_USER_AGENT Õâ¸ö»·¾³±äÊýÔÚÄúµÄ CGI script 
ÖеÃÖªÊÇ·ñ 
     Netscape ÕýÔÚÖ´ÐÐÄúµÄ script¡£ÒÔÏÂΪһÀý£º 
 
          $browser = $ENV{'HTTP_USER_AGENT'}; 
          if ($browser =~ /Mozilla/) { 
              # 
              # Netscape 
              # 
          } else { 
              # 
              # Non Netscape 
              # 
          } 
 
 
---------------------------------------------------------------------- 
 
     Q4.12: ÎªÊ²÷áÎҵĠsystem() Ëù²úÉúµÄ×ÊÁÏÊä³ö˳Ðò²»¶Ô£¿ 
 
 
ÕâÊÇÓÉì¶±ê×¼Êä³öµÄ²úÉú·½Ê½Í¨³£ÊÇÏÈÀÛ»ýÏ൱µÄ×ÊÁÏÔÙÊä³ö(buffered)¡£Òª 
     ÈÃÊä³öµÄ×ÊÁÏÒÔÕýÈ·µÄ˳ÐòÏÔʾ£¬Äú±ØÐë½åÓÉ $| Õâ¸ö±äÊýµÄÉ趨½« 
buffering 
     µÄÌØÐԹصô¡£ 
 
 
---------------------------------------------------------------------- 
 
     Q4.13: ÎÒÌý˵ Netscape »áÖ§Ô® Java*¡£ÕâÊDz»ÊÇ˵ÎÒÏÖÔÚµÃÆú 
Perl£¬¸Ä 
     Java ÁË£¿ÊDz»ÊǸÃÕâ÷á×ö£¿ 
 
          ¡¾ÒëÕß¡¿Ô­ FAQ ÒÑÓÐÏ൱һ¶Îʱ¼äδ¸üС£Õâ¾ä»°ÏÖÔÚÓ¦¸Ã¸Ä×÷ 
          ¡¸Netscape ºÍ IE Á½´óä¯ÀÀÆ÷¶¼ÒÑÖ§Ô® Java¡¹¡£ 
 
     ²»¡¢²»¡¢²»¡£Java ºÍ CGI µÄ¸ÅÄîÍêÈ«²»Í¬¡£CGI ÊÇÔÚ server 
¶ËÖ´ÐУ¬¶ø 
     JavaÔòÊÇÔÚ client ¶ËÖ´ÐС£ÓÐЩ¶«Î÷£¨È綯»­£©¿É½åÓÉʹÓàJava 
¶øµÃµ½½ÏºÃ 
     µÄЧ¹û¡£µ«Äú¿É¼ÌÐøÊ¹Óàperl À´·¢Õ¹ server ¶ËµÄÓ¦ÓóÌʽ¡£ 
 
     Èç¹ûÄúÐèÒªÓйؠJava ½øÒ»²½µÄ×ÊÁÏ£¬µ×ÏÂÁÐÁ˼¸¸öÎļþÄú¿ÉÒÔÈ¥¿´¿´*£º 
 
        * ÉýÑô¹«Ë¾µÄ Java Îļþ (<http://java.sun.com>) 
        * Tom C.ËùдµÄ Java uber Alles£¨Java µÄÖÖÖÖ£© 
        * Java, the Illusion£¨Java »ÃÏñ£© 
 
          ¡¾ÒëÕß¡¿ááÃæÕâÁ½ÆªÎÄÕ¶ԠJava ¼°Õâ¸öÈȳ±×÷Á˺ÜÑÏÀ÷µÄÅúÅС£±¾ 
          FAQ ×÷Õß Tom C. µÄ Java uber Alles ÖеÄÂÛµãÖ÷ÒªÖøÖØì¶¼¼Êõ²ã 
          Ãæ¡£Tom ¶Ô Java µÄ̬¶È»òÐí´ú±íÁ˲»ÉÙ Perl ÕóÓªÈËÊ˵ÄÐÄÉù¡£ 
 
 
---------------------------------------------------------------------- 
 
     Q4.14: ÎÒÒªÈçºÎ¶ÁÈ¡»·¾³±äÊý£¿ÎªÊ²÷áËüÃÇÓÐʱºò»á²»Ò»Ñù£¿ 
 
     Äú¿ÉÒÔ͸¹ý %ENV Õâ¸ö¹ØÁ¬ÕóÁÐÀ´¶ÁÈ¡»·¾³±äÊý¡£ÒÔÏÂÕâ¸ö¼òµ¥µÄ script 
»á°Ñ 
     ËùÓеĻ·¾³±äÊýÓ¡³öÀ´£¨ÅźÃ˳Ðò£©£º 
 
          #!/usr/local/bin/perl -w 
          print "Content-type: text/plain", "\n\n"; 
 
          foreach $key (sort keys %ENV) { 
              print $key, " = ", $ENV{$key}, "\n"; 
          } 
          exit 0; 
 
 
ºÜ²»Ðҵģ¬ÓÐЩ»·¾³±äÊý»á±»Ä³Ð©ä¯ÀÀÆ÷ºöÂÔµô¡£Æ©È磬ÓÐЩä¯ÀÀÆ÷¾Í²»É趨 
     HTTP_REFERER¡£ 
 
---------------------------------------------------------------------- 
 
     Q4.15: ÎªÊ²÷áÎÒÊä³öµÄ×ÊÁϱ»½ÁÂÒÁË£¨Èç ``b < a'' »á±»ÆÆ»µµô£©£¿ 
 
     Èç¹ûÄúË͵ĠMIME ÀàÐÍÊÇ HTML µÄ»°£¬Äú±ØÐë¡¸ÌøÍÑ¡¹ (escape) 
ijЩ·ûºÅ£¬ 
     Èç ``<''¡¢``&anp;''£¬¼° ``>''£¬·ñÔòä¯ÀÀÆ÷»áÒÔΪËüÊÇ HTML 
¡¾±êÇ©¡¿¡£ 
 
     Äú±ØÐëʹÓÃÒÔϸñʽÀ´ÌøÍÑÌØÊâ×ÖÔª£º 
 
          &#ASCII ´úÂë; 
 
     Äú¿ÉÒÔÔÚÖ¸ÁîÁÐÖ´ÐÐÕâ¸ö¼òµ¥µÄ script£¬±ã¿ÉµÃµ½·Ç×ÖĸÊý×ÖÐÔ×ÖÔª 
(non 
     alpha-numeric characters) Ëù¶ÔÓ¦µÄ ASCII Â룺 
 
          #!/usr/local/bin/perl -w 
          print 'ÇëÊäÈë×Ö´®£º '; 
          chop($string = <STDIN>); 
          $string =~ s/([^\w\s])/sprintf("&#%d;", ord($1))/ge; 
          print 'ÌøÍѹýµÄ×Ö´®ÊÇ£º ', "$string\n"; 
          exit 0; 
 
 
---------------------------------------------------------------------- 
 
     Q4.16: ÎªÊ²÷áÎÒµÄPerl CGI 
³Ìʽ¿ÉÒÔÓÉÖ¸ÁîÁУ¬È´ÎÞ·¨´Óä¯ÀÀÆ÷È¥Ö´ÐУ¿ 
 
     ×î¿ÉÄܵÄÔ­ÒòÊÇȨÏÞµÄÎÊÌâ¡£±ðÍüÁË£¬ÄúµÄ server ¿ÉÄÜÊÇÒÔ 
``nobody''¡¢ 
 
``www''£¬»òÆäËûȨÏ޺ܵ͵ÄÕÊ»§Éí·ÝÀ´Ö´Ðеġ£Òò´Ë£¬³ý·ÇËüÓÐ×ã¹»µÄȨÏÞ£¬ 
     ·ñÔòÊÇÎÞ·¨Ö´ÐÐÄúµÄ script µÄ¡£ 
 
---------------------------------------------------------------------- 
 
     Q4.17: ÎªÊ²÷áÎҵĠPerl CGI ³ÌʽÄÜÅÜ£¬µ«ÊDz»»á°Ñ×ÊÁÏдµ½µµ°¸ÖУ¿ 
 
     ÕâÓÖÊÇȨÏÞÔÚ×÷¹Ö£¡server 
³ý·ÇÓÐ×ã¹»µÄȨÏÞ·ñÔòÊÇÎÞ·¨½«×ÊÁÏд½øÄ³Ä¿Â¼Ï 
     µÄijµµ°¸ÀïÈ¥µÄ¡£ 
 
     ÄúÓ¦¸ÃÑø³Éϰ¹ß¼ì²é open Ö¸ÁîµÝ»ØµÄ´íÎó״̬ (error status)£º 
 
          print "Content-type: text/plain\n\n"; 
          . 
          . 
          . 
          open(FILE, ">/some/dir/some.file") || 
              print 'ÎÞ·¨Ð´½øµµ°¸£º ', "$!\n"; 
          . 
          . 
          . 
 
 
---------------------------------------------------------------------- 
 
     Q4.18: ÒªÈçºÎ×öÒ»¸ö»áάϵ״̬£¬»òÔÊÐí¡¾Í¬Ò»Ê¹ÓÃÕß¡¿¶à´ÎÁ¬ÏߵĠ
form£¿ 
 
     Äú¿ÉÒÔÓàCGI::MiniSvr Õâ¸ö module 
À´Î¬³Ö¡¾¼Çס¡¿¼¸´Î²»Í¬µÄÁ¬ÏßÖ®¼äµÄ×´ 
     Ì¬×ÊÁÏ¡£ 
 
     »òÕߣ¬Äú¿ÉÒÔÖÆ×öһϵÁеĶ¯Ì¬Îļþ£¬Ôڱ˴ËÖ®¼äÏ໥´«µÝÒ»¸öÆÚ¼ä´úÂë 
     (session ID)£¬´Ë´úÂë¿ÉÒÔÒÔѯÎÊ 
(query)¡¢¶îÍâ·¾¶£¬»òÒþ²ØÊ½À¸Î»µÈÐÎʽ´æ 
     ÔÚ*¡£ 
 
          ¡¾ÒëÕß¡¿CGI.pm »áÌæÄú°ÑÕⲿ·Ý£¨Î¬³Ö״̬)×öºÃ (ÓÃÉÏÊöµÄÔ­Àí 
          £©£¬¹ÊʹÓàCGI.pm ¿É×Ô¶¯ÏíÊÜÕâÏÄÜ£¬²»ÐèÒª×Ô¼ºÈ¥×ö¡£ÕâÓÖ¶à 
          ÁËÒ»¸ö¸ÃʹÓàCGI.pm µÄÀíÓÉ¡£ 
 
 
---------------------------------------------------------------------- 
 
     Q4.19: Èç¹û²»´Óä¯ÀÀÆ÷È¥Ö´ÐÐÎҵĠCGI ³Ìʽ£¬ÒªÈçºÎÌæËü³ý´í£¿ 
 
     CGI ³Ìʽ²»ÈÝÒ׳ý´í¡£Äú¿ÉÒÔ½åÖøÊÖ¶¯É趨»·¾³±äÊýÀ´Ä£Äâ server£º 
 
          setenv HTTP_USER_AGENT "Mozilla/2.0b6"       (csh) 
 
          »ò 
 
          export HTTP_USER_AGENT = "Mozilla/2.0b6"     (ksh, bash) 
 
     ÒªÄ£Äâ POST ÇëÇó£¬Äú¿ÉÒÔ°Ñ×ÊÁÏÏȷŽøÒ»¸öµµ°¸ÀȻáá°ÑËü pipe 
µ½ÄúµÄ³Ì 
     Ê½È¥£º 
 
          cat data.file | some_program.pl 
 
     »òÕßÄú¿ÉÒÔÓàCGI.pm À´°ïÄú³ý´í¡£¼ÙÉèÄúÓÐÒ»¸öÏñÏÂÃæÕâÑùµÄ 
script£¬Ëü»á 
     °ÑËùÓÐÄú´«¸øËüµÄË÷Òý£¯É趨ֵ¶ÔÓ¦×ÊÁÏ (key/value pairs) 
¶¼ÁÐÓ¡³öÀ´¡£ 
 
          #!/usr/local/bin/perl -w 
          use CGI; 
          $cgi = new CGI; 
          print $cgi->header; 
          print $cgi->start_html("Simple CGI.pm Program"); 
          print "<H1>Simple CGI.pm Program</H1>\n"; 
          print "<HR >"; 
          print 'ÒÔÏÂËùÁеÄÊÇÄú´«Ë͵ÄÉ趨ֵ£º'; 
          print $cgi->dump; 
          exit 0; 
 
     Õâ¸ö script ²»»áÔÚºõÄúÊÇ͸¹ý GET¡¢POST£¬»ò ISINDEX 
ÇëÇ