⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 perlfaq3.html

📁 《Perl 5教程》及《perl常问问题集》
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<EM>重要</EM>:不论你做什麽,请千万不要因为觉得沮丧,就把 perl 直译器丢到你的 cgi-bin目录下,好让你的 web伺服器能执行你的程式。这是一个非常大的安全漏洞。花点时间想想怎样才是正确的做法吧。<P><P><HR><H2><A NAME="_Q_R_O_C_g_X_">我能利用命令列写出有用的程式吗?</A></H2>可以。详情请看 <A HREF="../../tppmsgs/msgs0.htm#87" tppabs="http://www.perl.org/CPAN/doc/manual/html/pod/perlrun.html#">perlrun</A>。以下有些范例 (假设用的是标准的 Unix shell引言规则)。<P><PRE>    #把第一栏和最後一栏相加    perl -lane 'print $F[0] + $F[-1]'</PRE><P><PRE>    #辨别是否为文字档    perl -le 'for(@ARGV) {print if -f &amp;&amp; -T _}' *</PRE><P><PRE>    #移除 C程式中的说明    perl -0777 -pe 's{/\*.*?\*/}{}gs' foo.c</PRE><P><PRE>    #让档案年轻一个月,躲避追杀的魔鬼 (daemon)    perl -e '$X=24*60*60; utime(time(),time() + 30 * $X,@ARGV)' *</PRE><P><PRE>    #找出第一个未用的 uid    perl -le '$i++ while getpwuid($i); print $i'</PRE><P><PRE>    #显示合理的使用说明路径 (manpath)    echo $PATH | perl -nl -072 -e '        s![^/+]*$!man!&amp;&amp;-d&amp;&amp;!$s{$_}++&amp;&amp;push@m,$_;END{print&quot;@m&quot;}'</PRE><P>好吧,最後一个例子事实上是「perl程式困惑化」竞赛 (Obfuscated Perl)的 参赛作品。 :-)<P><P><HR><H2><A NAME="_perl_L_k_b_D">为何一行的 perl程式无法在我的 DOS/Mac/VMS系统上运作?</A></H2>问题通常出在那些系统的命令解译器对於参数的引用与 Unix shells 所作的解释不同,而後者很不幸的是这些一行 perl的生父。在某些系统,也许你得把单引号改成双引号,但这却是你万万 <EM>不可</EM>在 Unix或 Plan9系统上作的事。你也许还得把一个 %改成 %%。<P>例如说:<P><PRE>    # Unix    perl -e 'print &quot;Hello world\n&quot;'</PRE><P><PRE>    # DOS,等。    perl -e &quot;print \&quot;Hello world\n\&quot;&quot;</PRE><P><PRE>    # Mac    print &quot;Hello world\n&quot;     (然後执行 &quot;Myscript&quot;或按 Shift-Command-R)</PRE><P><PRE>    # VMS    perl -e &quot;print &quot;&quot;Hello world\n&quot;&quot;&quot;</PRE><P>问题是,这些方法没有一个是完全可靠的:它都得看命令解译器的脸色。在 Unix中,前两者通常可以用。在 DOS下,两者可能都没有用。若 4DOS是命令解译器,下面此法可能比 较有希望:<P><PRE>  perl -e &quot;print &lt;Ctrl-x&gt;&quot;Hello world\n&lt;Ctrl-x&gt;&quot;&quot;</PRE><P>在 Mac 下,端视你所用的环境为何。 MacPerl所附的 shell,或是 MPW, 其所支援的参数格式有不少都蛮像 Unix shells的,除了它自在地使用 Mac 的非 ASCII字元当成控制字元。<P>恐怕我得说这问题并没有一般解。白话一点说,它真是一团乱。<P>[部份答案是由 Kenneth Albanowski 所提供的。]<P><P><HR><H2><A NAME="_o_h_Perl_CGI_O_We">我得去哪里学 Perl的 CGI或是 Web程式设计呢?</A></H2>就模组来说,去 CPAN抓 CGI LWP 两个模组。就书本来看,参考关於书那部份里特别和 web 相关的问题。若有与 web相关的疑难杂症,像“为何我收到 500错误”或“它在命令列模式下跑得好好的,怎麽不能在浏览器下正常执行”时,请参看:<P><PRE>    The Idiot's Guide to Solving Perl/CGI Problems, by Tom Christiansen        <A HREF="../../tppmsgs/msgs0.htm#88" tppabs="http://www.perl.com/perl/faq/idiots-guide.html">http://www.perl.com/perl/faq/idiots-guide.html</A></PRE><P><PRE>    Frequently Asked Questions about CGI Programming, by Nick Kew        <A HREF="../../tppmsgs/msgs0.htm#89" tppabs="ftp://rtfm.mit.edu/pub/usenet/news.answers/www/cgi-faq">ftp://rtfm.mit.edu/pub/usenet/news.answers/www/cgi-faq</A>        <A HREF="../../tppmsgs/msgs0.htm#90" tppabs="http://www3.pair.com/webthing/docs/cgi/faqs/cgifaq.shtml">http://www3.pair.com/webthing/docs/cgi/faqs/cgifaq.shtml</A></PRE><P><PRE>    Perl/CGI programming FAQ, by Shishir Gundavaram and Tom Christiansen        <A HREF="../../tppmsgs/msgs0.htm#91" tppabs="http://www.perl.com/perl/faq/perl-cgi-faq.html">http://www.perl.com/perl/faq/perl-cgi-faq.html</A></PRE><P><PRE>    The WWW Security FAQ, by Lincoln Stein        <A HREF="../../tppmsgs/msgs0.htm#92" tppabs="http://www-genome.wi.mit.edu/WWW/faqs/www-security-faq.html">http://www-genome.wi.mit.edu/WWW/faqs/www-security-faq.html</A></PRE><P><PRE>    World Wide Web FAQ, by Thomas Boutell        <A HREF="../../tppmsgs/msgs0.htm#93" tppabs="http://www.boutell.com/faq/">http://www.boutell.com/faq/</A></PRE><P>(译者:上面第叁份文件,Perl-CGI-FAQ的中译版可在 <AHREF="../../tppmsgs/msgs0.htm#94" tppabs="http://2ti.com/cgi-bin/2T/perl/perl-cgi-faq-chi/">http://2Ti.com/cgi-bin/2T/perl/perl-cgi-faq-chi/</A>处取得。最後一份(WWW FAQ)的中译版可自 <AHREF="../../tppmsgs/msgs0.htm#95" tppabs="http://www.acer.net/document/cwwwfaq/">http://www.acer.net/document/cwwwfaq/</A>取得。)<P><P><HR><H2><A NAME="_b_i_H_Perl_V_">在哪可以学到用 Perl作物件导向程式设计?</A></H2><A HREF="../../tppmsgs/msgs0.htm#57" tppabs="http://www.perl.org/CPAN/doc/manual/html/pod/perltoot.html#">perltoot</A>是个好开始,然後你可以再参考 <A HREF="../../tppmsgs/msgs0.htm#58" tppabs="http://www.perl.org/CPAN/doc/manual/html/pod/perlobj.html#">perlobj</A> 和 <A HREF="../../tppmsgs/msgs0.htm#61" tppabs="http://www.perl.org/CPAN/doc/manual/html/pod/perlbot.html#">perlbot</A>。Perltoot直到 5.004版本才诞生,但你可以从 <A HREF="../../tppmsgs/msgs0.htm#96" tppabs="http://www.perl.com/CPAN/doc/FMTEYEWTK/">http://www.perl.com/CPAN/doc/FMTEYEWTK/</A>下取得 (pod、html,或 postscript 格式)。<P><P><HR><H2><A NAME="_i_H_N_C_P_Perl_s_">哪里可以学到将 C与 Perl相连结? [h2xs, xsubpp]</A></H2>若你要从 Perl程式呼叫 C,就自 <A HREF="../../tppmsgs/msgs0.htm#71" tppabs="http://www.perl.org/CPAN/doc/manual/html/pod/perlxstut.html#">perlxstut</A>开始向 <A HREF="../../tppmsgs/msgs0.htm#72" tppabs="http://www.perl.org/CPAN/doc/manual/html/pod/perlxs.html#">perlxs</A>,<EM>xsubpp</EM>,及<A HREF="../../tppmsgs/msgs0.htm#74" tppabs="http://www.perl.org/CPAN/doc/manual/html/pod/perlguts.html#">perlguts</A>前进。反之,则读 <A HREF="../../tppmsgs/msgs0.htm#75" tppabs="http://www.perl.org/CPAN/doc/manual/html/pod/perlembed.html#">perlembed</A>,<A HREF="../../tppmsgs/msgs0.htm#73" tppabs="http://www.perl.org/CPAN/doc/manual/html/pod/perlcall.html#">perlcall</A>,及 <A HREF="../../tppmsgs/msgs0.htm#74" tppabs="http://www.perl.org/CPAN/doc/manual/html/pod/perlguts.html#">perlguts</A>。别忘了你可以从各模组的作者如何写他们的模组及解决他们的问题中学到很多。<P><P><HR><H2><A NAME="_w_g_F_perlembed_perlguts_">我已经读了 perlembed, perlguts,等等,但我仍然无法将 perl嵌入我的C程式,我做错了什麽?</A></H2>CPAN 下载 ExtUtils::Embed 套件,然後执行 `make test'。如果测试成功,就一遍又一遍地读那些 pod 说明档案。若它失败了,参看 <EM>perlbug</EM>并送一份内有<CODE>make test TEST_VERBOSE=1</CODE> 与 <CODE>perl -V</CODE>输出的报告。<P><P><HR><H2><A NAME="_A_Y">当我试着执行我的程式时,我收到某项讯息。它代表什麽意思?</A></H2><A HREF="../../tppmsgs/msgs0.htm#97" tppabs="http://www.perl.org/CPAN/doc/manual/html/pod/perldiag.html#">perldiag</A>有一份完整的 perl错误与警告讯息列表,并附有说明文字。你也可以用 splain程式 (伴随 perl而来)去解释这些错误讯息:<P><PRE>    perl program 2&gt;diag.out    splain [-v] [-p] diag.out</PRE><P>更改你的程式让它替你解释这些讯息也可以:<P><PRE>    use diagnostics;</PRE><P><P><PRE>    use diagnostics -verbose;</PRE><P><P><HR><H2><A NAME="_O_MakeMaker_">什麽是 MakeMaker?</A></H2>此模组 (亦为标准 perl 套件之一部份)设计的目的是要替一个模组从一 Makefile.PL中自动撰写出一个 Makefile。详情请看 <A HREF="../../tppmsgs/msgs0.htm#98" tppabs="http://www.perl.org/CPAN/doc/manual/html/lib/ExtUtils/MakeMaker.html">MakeMaker</A><P><P><HR><H1><A NAME="_P_v_y">作者与版权事宜</A></H1>Copyright (c) 1997 Tom Christiansen and Nathan Torkington. All rightsreserved.有关使用、(转)发行事宜,详见 <A HREF="perlfaq.html" tppabs="http://202.96.217.5/~xiaoyi/perlfaq.html">perlfaq</A> <P>译者:陈彦铭<P>中译版着作权所有:陈彦铭、萧百龄及两只老虎工作室。本中译版遵守并使用与原文版相同的使用条款发行。 <P></DL>    </BODY>    </HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -