Provided by: manpages-zh_1.5-1_all bug

NAME

       perlfaq - Perl 常問問題集 (2003/01/31 17:37:17)

DESCRIPTIONyz
       perlfaq 按照主題劃分為多茪憟鞳A在本文件的末尾有一茈媬。

       Where to get the perlfaqpooH

       這份檔案會定期投到 comp.lang.perl.misc。也可以在許多網站上找到它,例如
       http://www.perldoc.com/ 還有 http://faq.perl.org/
       譯者注:兩只老虎工作室的位置是 http://2Ti.com/cgi-bin/2T/perl/ 還有
       ftp://www.math.ncu.edu.tw/pub/staff/chenym/FAQ/Perl/ 還有
       <pailing@2Ti.com>

       How to contribute to the perlfaq p perlfaq^mH

       你可以將更正,擴充以及建議以郵件方式發送到 perlfaq-workers@perl.org .
       這茼a址不能用來提問題,它只用來蚰蕙礅e的
       FAQ。如果有問題那麼投遞到新聞組 comp.lang.perl.misc。可以在
       http://cvs.perl.org/cvsweb/perlfaq/ 查看鴝l碼樹 (它是在主-
       鴝l碼樹之外)。CVS 飫w記錄了對 FAQ 的所有改變。

       What will happen if you mail your Perl programming problems to the
       authorspGs{DH@H

       作者大概不會理會您所提的問題,除非您是在建議把一些新問題加進
       FAQ去,但如果是這樣的話這些問題當初就該寄到 perlfaq-workers@perl.com
       處才對。

       您應該已經閱讀了這份 FAQ 的第二部分,您應該知道 comp.lang.perl.misc
       才是尋求免費建議的適當地方。如果您的問題真的很南而且您急著-
       n得到正確解答,那麼您該請一蚥U問。

Credits Pperlfaq-workers@perl.org) 進行維護,很多人貢獻了解答,更正和評注。

Author and Copyright Information

       Copyright (c) 1997-2003 Tom Christiansen, Nathan Torkington, and other
       contributors noted in the answers.

       All rights reserved.

       Bundled Distributions

       This documentation is free; you can redistribute it and/or modify it
       under the same terms as Perl itself.

       Irrespective of its distribution, all code examples in these files are
       hereby placed into the public domain.  You are permitted and encouraged
       to use this code in your own programs for fun or for profit as you see
       fit.  A simple comment in the code giving credit would be courteous but
       is not required.

       Disclaimer

       This information is offered in good faith and in the hope that it may
       be of use, but is not guaranteed to be correct, up to date, or suitable
       for any particular purpose whatsoever.  The authors accept no liability
       in respect of this information or its use.

Table of Contents錄
       perlfaq  - 本文件
       perlfaq1 - 有關 Perl 的一般問題
       perlfaq2 - 獲取和學習 Perl
       perlfaq3 - 編程工具
       perlfaq4 - 數據操作
       perlfaq5 - 檔案和格式
       perlfaq6 - 正則表達式
       perlfaq7 - 綜合的問題
       perlfaq8 - 系統交互
       perlfaq9 - 網路

The QuestionsD
       perlfaq1: Perl@D

       有關 Perl 的一般的,非技術層次的問題

       o   什麼是 Perl?

       o   誰對 Perl 提供支持?誰開發了它?為什麼它是自由的?

       o   我該用一茠岩貌 Perl?

       o   perl4 和 perl5 各代表什麼?

       o   perl6 是什麼?

       o   Perl的發展已矇w了嗎?

       o   Perl難學嗎?

       o   Perl和其他的程設語言比起來如何?例如 Java, Python, REXX, Scheme,或
           Tcl?

       o   我可以用 Perl來做【某種差事】嗎?

       o   些場合下不適合用 Perl?

       o   「perl」和「Perl」有什麼不同?

       o   Perl程式應算是 program還是 script?

       o   JAPH 是什麼?

       o   到兒可拿到 Larry Wall 的智慧諷語 (witticisms)?

       o   我n如何取信、說服我的系統管理者/上司/屬下使用第 5/5.8.3 版的
           Perl,而不去用其他的語言?

       perlfaq2:M Perl

       從裏尋找 Perl 的源程式和文件,支持以及相關事項

       o   些孕x上有 Perl?n到裏去找?

       o   n如何取得以二進制形式發行的 Perl?

       o   我的系統裏沒有 C編譯器。n如何編譯 perl?

       o   我直接將
           Perl的執行檔從一台機器上複製到另一台機器上,但是程式跑不起來。

       o   我抓回了鴝l碼,試著編譯 perl,但是 gdbm/dynamic
           loading/malloc/linking/...部分失敗。n如何將它搞定?

       o   Perl有些模組和延伸? CPAN是什麼? CPAN/src/...又代表什麼?

       o   是不是有一虒g ISO【國際標準局】或 ANSI【美國國家標準局】認可的
           Perl版本?

       o   Perl的相關資料n上兒找?

       o   USENET上有些專門討論 Perl的新聞討論群?問題該投到裏?

       o   如果我想投程式鴝l碼,該投到茠O子上?

       o   Perl 書籍

       o   和 Perl 有關的雜志

       o   網路上的 Perl:接觸 FTP 和 WWW

       o   有些討論 Perl 的郵件列表?

       o   comp.lang.perl.misc 的檔案庫

       o   如何購買商業版本的 Perl?

       o   如果發現 bugsn向何處報告?

       o   什麼是 perl.com? Perl Mongers? pm.org? perl.org? cpan.org?

       perlfaq3:s{u具

       編程工具和編程支持

       o   我如何作 (任何事)?

       o   如何以交互的方式使用 Perl?

       o   有 Perl shell嗎?

       o   怎樣查找我的系統中安裝了些模塊

       o   如何替我的 Perl 程式除蟲?

       o   如何檢測 (profile) 我的 perl 程式?

       o   如何替我的 Perl程式作交叉參考 (cross-reference)?

       o   有 Perl專用的美化列印程式 (pretty-printer)嗎?

       o   有 Perl的 ctags 嗎?

       o   有沒有一 IDE 或圖形界悸 Perl 編輯器?

       o   兒有 vi 用的 Perl 宏?

       o   給 emacs用的 perl模式又n去抓呢?

       o   如何在 Perl裏使用 curses?

       o   X或 Tk如何與 Perl配合呢?

       o   如何不靠 CGI或 Tk 幫助作出簡單的目錄(選單)?

       o   如何讓我的 Perl程式跑得更快些?

       o   如何讓我的 Perl 程式少用一些記憶體?

       o   把局部變量的引用返回是不安全的做法嗎?

       o   我如何釋放一蚍晥帤畢C以縮小我的程式尺寸?

       o   如何讓我的 CGI稿本 (script)執行起來更有效率?

       o   如何隱藏 Perl程式的鴝l碼?

       o   如何把我的 Perl程式碼編譯成 byte code或 C?

       o   怎樣把 Perl 編譯成 Java?

       o   如何才能讓 "#!perl" 在 [MS-DOS,NT,...] 下起作用?

       o   我能利用命令行寫出有用的程式嗎?

       o   為何一行的 perl 程式無法在我的 DOS/Mac/VMS系統上運作?

       o   我得去裏學 Perl的 CGI或是 Web程式設p呢?

       o   從裏可以學習惘V對象的 Perl 編程?

       o   從裏可以學習將 Perl 與 C 連接?[h2xs, xsubpp]

       o   我已經閱讀了 perlembed,perlguts 等等,但是還是不能在我的 C
           程式中嵌入 perl;我作錯了什麼?

       o   我試著運行我的稿本時,看到了這樣的消息。它是什麼意思?

       o   什麼是 MakeMaker?

       perlfaq4:@

       操縱數字,日期,字符串,數組,散列以及各種其他數據類型。

       o   Why am I getting long decimals (eg, 19.9499999999999) instead of
           the numbers I should be getting (eg, 19.95)?

       o   Why isn't my octal data interpreted correctly?

       o   Does Perl have a round() function?  What about ceil() and floor()?
           Trig functions?

       o   How do I convert between numeric representations?

       o   Why doesn't & work the way I want it to?

       o   How do I multiply matrices?

       o   How do I perform an operation on a series of integers?

       o   How can I output Roman numerals?

       o   Why aren't my random numbers random?

       o   How do I get a random number between X and Y?

       o   How do I find the day or week of the year?

       o   How do I find the current century or millennium?

       o   How can I compare two dates and find the difference?

       o   How can I take a string and turn it into epoch seconds?

       o   How can I find the Julian Day?

       o   How do I find yesterday's date?

       o   Does Perl have a Year 2000 problem?  Is Perl Y2K compliant?

       o   How do I validate input?

       o   How do I unescape a string?

       o   How do I remove consecutive pairs of characters?

       o   How do I expand function calls in a string?

       o   How do I find matching/nesting anything?

       o   How do I reverse a string?

       o   How do I expand tabs in a string?

       o   How do I reformat a paragraph?

       o   How can I access or change N characters of a string?

       o   How do I change the Nth occurrence of something?

       o   How can I count the number of occurrences of a substring within a
           string?

       o   How do I capitalize all the words on one line?

       o   How can I split a [character] delimited string except when inside
           [character]?

       o   How do I strip blank space from the beginning/end of a string?

       o   How do I pad a string with blanks or pad a number with zeroes?

       o   How do I extract selected columns from a string?

       o   How do I find the soundex value of a string?

       o   How can I expand variables in text strings?

       o   What's wrong with always quoting "$vars"?

       o   Why don't my <<HERE documents work?

       o   What is the difference between a list and an array?

       o   What is the difference between $array[1] and @array[1]?

       o   How can I remove duplicate elements from a list or array?

       o   How can I tell whether a certain element is contained in a list or
           array?

       o   How do I compute the difference of two arrays?  How do I compute
           the intersection of two arrays?

       o   How do I test whether two arrays or hashes are equal?

       o   How do I find the first array element for which a condition is
           true?

       o   How do I handle linked lists?

       o   How do I handle circular lists?

       o   How do I shuffle an array randomly?

       o   How do I process/modify each element of an array?

       o   How do I select a random element from an array?

       o   How do I permute N elements of a list?

       o   How do I sort an array by (anything)?

       o   How do I manipulate arrays of bits?

       o   Why does defined() return true on empty arrays and hashes?

       o   How do I process an entire hash?

       o   What happens if I add or remove keys from a hash while iterating
           over it?

       o   How do I look up a hash element by value?

       o   How can I know how many entries are in a hash?

       o   How do I sort a hash (optionally by value instead of key)?

       o   How can I always keep my hash sorted?

       o   What's the difference between "delete" and "undef" with hashes?

       o   Why don't my tied hashes make the defined/exists distinction?

       o   How do I reset an each() operation part-way through?

       o   How can I get the unique keys from two hashes?

       o   How can I store a multidimensional array in a DBM file?

       o   How can I make my hash remember the order I put elements into it?

       o   Why does passing a subroutine an undefined element in a hash create
           it?

       o   How can I make the Perl equivalent of a C structure/C++ class/hash
           or array of hashes or arrays?

       o   How can I use a reference as a hash key?

       o   How do I handle binary data correctly?

       o   How do I determine whether a scalar is a
           number/whole/integer/float?

       o   How do I keep persistent data across program calls?

       o   How do I print out or copy a recursive data structure?

       o   How do I define methods for every class/object?

       o   How do I verify a credit card checksum?

       o   How do I pack arrays of doubles or floats for XS code?

       perlfaq5:M式

       I/O and the "f" issues: filehandles, flushing, formats, and footers.

       o   How do I flush/unbuffer an output filehandle?  Why must I do this?

       o   How do I change one line in a file/delete a line in a file/insert a
           line in the middle of a file/append to the beginning of a file?

       o   How do I count the number of lines in a file?

       o   How can I use Perl's "-i" option from within a program?

       o   How do I make a temporary file name?

       o   How can I manipulate fixed-record-length files?

       o   How can I make a filehandle local to a subroutine?  How do I pass
           filehandles between subroutines?  How do I make an array of
           filehandles?

       o   How can I use a filehandle indirectly?

       o   How can I set up a footer format to be used with write()?

       o   How can I write() into a string?

       o   How can I output my numbers with commas added?

       o   How can I translate tildes (~) in a filename?

       o   How come when I open a file read-write it wipes it out?

       o   Why do I sometimes get an "Argument list too long" when I use <*>?

       o   Is there a leak/bug in glob()?

       o   How can I open a file with a leading ">" or trailing blanks?

       o   How can I reliably rename a file?

       o   How can I lock a file?

       o   Why can't I just open(FH, ">file.lock")?

       o   I still don't get locking.  I just want to increment the number in
           the file.  How can I do this?

       o   All I want to do is append a small amount of text to the end of a
           file.  Do I still have to use locking?

       o   How do I randomly update a binary file?

       o   How do I get a file's timestamp in perl?

       o   How do I set a file's timestamp in perl?

       o   How do I print to more than one file at once?

       o   How can I read in an entire file all at once?

       o   How can I read in a file by paragraphs?

       o   How can I read a single character from a file?  From the keyboard?

       o   How can I tell whether there's a character waiting on a filehandle?

       o   How do I do a "tail -f" in perl?

       o   How do I dup() a filehandle in Perl?

       o   How do I close a file descriptor by number?

       o   Why can't I use "C:\temp\foo" in DOS paths?  What doesn't
           `C:\temp\foo.exe` work?

       o   Why doesn't glob("*.*") get all the files?

       o   Why does Perl let me delete read-only files?  Why does "-i" clobber
           protected files?  Isn't this a bug in Perl?

       o   How do I select a random line from a file?

       o   Why do I get weird spaces when I print an array of lines?

       perlfaq6:hF式

       模式匹配和正則表達式。

       o   我該如何使用正規表示式才不至於寫出不合語法且難以維護的程式碼?

       o   我無法匹配超過一行的內容,裏出了問題?

       o   我如何取出位於不同行的兩蚍狾▲﹞坐漁e?

       o   我把一茈興W表示式放入 $/但卻沒有用。錯在裏?

       o   如何在
           LHS端【譯注:式子中運算元左端部份】作不區別大小寫式的替換,但在
           RHS端【右端】保留大小寫區別?

       o   如何使 "\w" 對應到附奏記號 (accented)的字元?

       o   如何作一蚞A合不同
           locale【譯注:語言環境,國家地區在文字編碼上各自的慣例】的
           "/[a-zA-Z]/" 對應?

       o   在一茈興W表示式裏如何引入 (quote) 變量?

       o   "/o" 到底是幹麼用的?

       o   如何使用正規表示式將檔案中 C語言樣式的注解刪掉?

       o   我能用 Perl的正規表示式去對應成對的符號嗎?

       o   有人說正規表示式很貪婪,那是什麼意思?該如何避免它所帶來的問題?

       o   如何處理每一行的每茼r?

       o   我如何印出文字出現頻率或行出現頻率的綱n?

       o   如何能作近似對應?

       o   我如何有效率地一次對應多茈興W表示式?

       o   為何我用 "\b" 作字界搜尋時會失敗呢?

       o   為什麼每當我用 $&, $`,或 $'時程式的速度就慢下來了呢?

       o   正規表示式中的 "\G" 能給我什麼好處?

       o   Perl正規表示引擎是 DFA 或 NFA?它怓O POSIX 相容的嗎?

       o   在無返回W下文中用 grep或 map有什麼不對?

       o   如何對應多位元組字母所構成的字串?

       o   如何匹配使用者提供的模式?

       perlfaq7:XD

       綜合的 Perl 語言問題,不適於在其他所有段落中討論的問題

       o   我能拿到 Perl的 BNF/yacc/RE嗎?

       o   $@%*這些符號是什麼意思?我怎麼知道何時該使用他怍O?

       o   字串加引號或使用分號及逗號是否絕對必n/還是完全沒必n?

       o   我如何跳過一些傳回H

       o   我如何暫時濾掉警告訊息?

       o   什麼是一蚋X充 (extension)?

       o   為何 Perl運算子的優先順序和 C的不一樣?

       o   我如何聲明/創建一蚍痤硎c?

       o   如何創建一蚍珔禲H

       o   如何創建一蚚?

       o   如何知道一蚥僆q是否是污染的?

       o   什麼是閉包?

       o   什麼是變量自殺,我應該怎樣防止它?

       o   如何傳遞/返回一荁函數 Function, 檔案句柄 FileHandle, 數組 Array,
           散列 Hash, 方法 Method, 正則表達式 Regex}?

       o   如何創建一蚗R態變量?

       o   動態和靜態作用域有什麼區別?local()my() 呢?

       o   在存在同名內部變量的作用域中,如何存取一荌妧A變量?

       o   深連接和淺連接有什麼不同?

       o   為什麼 "my($foo) = <FILE>;" 不工作?

       o   如何咿w義一茪澈堥蝻A操作符 或者方法?

       o   調用函數時 &foo 和 foo() 的形式有什麼不同?

       o   如何創建一茪壑隞y句?

       o   如何捕獲對未定義變量,函數或方法的訪問?

       o   為什麼找不到包含在同一蚗仵蚺云漱隤k?

       o   如何找到當前的包?

       o   如何注釋掉大塊的 perl 代碼?

       o   如何清空一茈]?

       o   如何使用變量@為一蚥僆q名?

       o   "bad interpreter" 是什麼意思?

       perlfaq8:t互

       進程間通信 (IPC), 使用者界控惆 (鍵盤,螢幕和指點設備)。

       o   如何找出正在運行的作業系統?

       o   為什麼 exec() 不返回?

       o   如何對鍵盤/螢幕/滑鼠做些花樣?

       o   如何列印有顏色的內容?

       o   如何只讀取一蚆鉿茪ㄤ市搦鬗U回車?

       o   如何檢測鍵盤上已有輸入?

       o   如何清屏?

       o   如何獲取螢幕大小?

       o   如何向使用者詢問密碼?

       o   如何讀寫串口?

       o   如何解碼加密的口令檔案?

       o   如何在I景開啟進程?

       o   如何截獲控制字符/信號?

       o   在 Unix 系統中如何蚹 shadow 檔案?

       o   如何設置時間和日期?

       o   如何 sleep()alarm() 少於一秒的時間?

       o   如何測度少於一秒的時間?

       o   如何做 atexit()或 setjmp()/longjmp()的動作?(異常處理)

       o   為何我的 sockets程式在 System V
           (Solaris)系統下不能用?「不支持的協議」這蚇欞~訊息又是什麼意思?

       o   如何從 Perl裏呼叫系統中獨特的 C函數?

       o   在裏可以找引入檔來做 ioctl()或 syscall()?

       o   為何 setuid perl程式會抱怨關於系統核心的問題?

       o   如何打開對某程式既輸入又輸出的管道 (pipe)?

       o   為何用 system()卻得不到一茷令的輸出呢?

       o   如何補捉外部指令的 STDERR?

       o   為何當管道開啟失敗時 open()不會傳回錯誤訊息?

       o   在輸出O空的情境裏使用反向引號有何不對?

       o   如何不經過 shell處理來呼叫反向引號?

       o   為何給了 EOF(Unix上是 ^D,MS-DOS上是 ^Z)後我的程式就不能從
           STDIN讀取東西了呢?

       o   如何把 shell程式轉成 perl?

       o   perl能處理 telnet或 ftp 會話嗎?

       o   如何在 Perl裏達到 Expect的功能?

       o   有沒有可能將 perl的指令列隱藏起來,以躲避像 "ps"之類的程式?

       o   我在 perl script裏
           {更動目錄,更改我的使用環境}。為何這些改變在程式執行完後就消失了呢?如何讓我做的-
           蚹幭蒛S出來?

       o   如何關閉一茧{式的檔案句柄而不用等它完成呢?

       o   如何 fork 一茼u護進程?

       o   如何知道自己是否在交互地運行?

       o   如何為緩慢的事件設置超時?

       o   如何設置 CPU 額?

       o   如何避免在 Unix 系統中產生僵屍進程?

       o   如何使用 SQL 數據庫?

       o   如何使 system() 在收到 control-C 時退出?

       o   如何無阻塞地打開一蚗仵蛂H

       o   如何從 CPAN 安裝模塊?

       o   require 和 use 的區別是什麼?

       o   如何設置我自己的模塊/庫路徑?

       o   如何將我自己的程式的路徑加入到模塊/庫搜索路徑中?

       o   如何在運行時將一茈媬加入到我的 include 路徑中?

       o   什麼是 socket.ph,從兒可以得到它?

       perlfaq9:路

       網路通信,網際網路以及少量有關 web 的內容

       o   一 CGI 稿本的回應的正確格式是什麼?

       o   我的 CGI 稿本從命令行執行正常,但是在瀏覽器中不行 (500 Server
           Error)。

       o   如何從 CGI 程式中得到好一點的錯誤提示?

       o   如何將字符串中的 HTML 刪除?

       o   如何展開 URL?

       o   如何從使用者的機器上下載檔案?如何打開其他機器上的檔案?

       o   如何在 HTML 添加一蚍u出選單?

       o   如何獲取 HTML 檔案?

       o   如何根據提交的內容自動生成一 HTML ?

       o   如何解碼或創建 web 中的 %-encoding?

       o   如何咿w向到其他雇?

       o   如何為我的網階[上密碼?

       o   如何用 Perl 蚹鴽琲 .htpasswd 和 .htgroup 檔案?

       o   如何確保使用者不會在表單中輸入使我的 CGI 稿本作壞事的H

       o   如何解釋一荈l件頭?

       o   如何解碼一 CGI 表單?

       o   如何檢測一茼陵蘆熄l件地址?

       o   如何解碼一 MIME/BASE64 字符串?

       o   如何返回使用者的郵件地址?

       o   如何發郵件?

       o   如何使用 MIME 來為郵件消息增加附件?

       o   如何讀郵件?

       o   如何找到我的主機名/域名/IP 地址?

       o   如何獲取一篇新聞文章或活動的新聞組?

       o   如何獲取/上傳一 FTP 檔案?

       o   如何進行遠程過程調用 RPC ?

者
      Auu@Abbbush