.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.13 .\" .\" Standard preamble: .\" ======================================================================== .de Sh \" Subsection heading .br .if t .Sp .ne 5 .PP \fB\\$1\fR .PP .. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. | will give a .\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to .\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' .\" expand to `' in nroff, nothing in troff, for use with C<>. .tr \(*W-|\(bv .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .\" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .hy 0 .if n .na .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .TH PERL 1 "2003-09-02" "perl v5.8.1" "Perl Programmers Reference Guide" .SH NAME perl \- Practical Extraction and Report Language (實用摘錄和彙報語言) .SH "總覽 SYNOPSIS" \&\fBperl\fR [\ \fB\-sTuU\fR\ ] [\ \fB\-hv\fR\ ]\ [\ \fB\-V\fR[:\fIconfigvar\fR]\ ] [\ \fB\-cw\fR\ ]\ [\ \fB\-d\fR[:\fIdebugger\fR]\ ]\ [\ \fB\-D\fR[\fInumber/list\fR]\ ] [\ \fB\-pna\fR\ ]\ [\ \fB\-F\fR\fIpattern\fR\ ]\ [\ \fB\-l\fR[\fIoctal\fR]\ ]\ [\ \fB\-0\fR[\fIoctal\fR]\ ] [\ \fB\-I\fR\fIdir\fR\ ]\ [\ \fB\-m\fR[\fB\-\fR]\fImodule\fR\ ]\ [\ \fB\-M\fR[\fB\-\fR]\fI'module...'\fR\ ] [\ \fB\-P\fR\ ] [\ \fB\-S\fR\ ] [\ \fB\-x\fR[\fIdir\fR]\ ] [\ \fB\-i\fR[\fIextension\fR]\ ] [\ \fB\-e\fR\ \fI'command'\fR\ ]\ [\ \fB\-\-\fR\ ]\ [\ \fIprogramfile\fR\ ]\ [\ \fIargument\fR\ ]... .PP 如果你是 Perl 新手,還是從 perlintro 看起吧,那是爲初學者準備的簡單介紹,提供了一些背景知識,幫助你瀏覽 Perl 其餘的大量文檔 .PP 爲方便閱讀,Perl 手冊分成了很多章 .Sh "概述 Overview" .Vb 3 \& perl Perl 概述 (本小節) \& perlintro Perl 介紹 (爲新手準備) \& perltoc Perl 目錄 (所有內容列表) .Ve .Sh "教程 Tutorials" .Vb 3 \& perlreftut Perl 引用 \& perldsc Perl 數據結構 \& perllol Perl 高級數據結構 .Ve .PP .Vb 2 \& perlrequick Perl 正則表達式快速入門 \& perlretut Perl 正則表達式 .Ve .PP .Vb 4 \& perlboot Perl OO 面向對象 入門 \& perltoot Perl OO 面向對象 教程 (第一部分) \& perltooc Perl OO 面向對象 教程 (第二部分) \& perlbot Perl OO 面向對象 竅門和例子 .Ve .PP .Vb 1 \& perlstyle Perl 程序風格 .Ve .PP .Vb 3 \& perlcheat Perl 投機取巧 \& perltrap Perl 大意者的陷阱 \& perldebtut Perl 調試 .Ve .PP .Vb 10 \& perlfaq Perl 常見問題 \& perlfaq1 有關 Perl 的一般問題 \& perlfaq2 獲取/學習 Perl \& perlfaq3 編程工具 \& perlfaq4 數據操縱 \& perlfaq5 文件與文件格式 \& perlfaq6 正則表達式 \& perlfaq7 Perl 語言本身的問題 \& perlfaq8 與操作系統交互 \& perlfaq9 網絡 .Ve .Sh "參考手冊 Reference Manual" .Vb 21 \& perlsyn Perl 語法 \& perldata Perl 數據結構 \& perlop Perl 操作符及優先級 \& perlsub Perl 定義函數 \& perlfunc Perl 內置函數 \& perlopentut Perl open() 教程 \& perlpacktut Perl pack() 和 unpack() 教程 \& perlpod Perl POD 文檔 \& perlpodspec Perl POD 文檔格式規約 \& perlrun Perl 執行選項 \& perldiag Perl 診斷信息 \& perllexwarn Perl 警告 控制警告 \& perldebug Perl 調試 \& perlvar Perl 預定義變量 \& perlre Perl 正則表達式 其餘的部分 \& perlreref Perl 正則表達式快速索引 \& perlref Perl 參考 其餘的部分 \& perlform Perl 格式 \& perlobj Perl 對象 \& perltie Perl 用簡單變量隱藏對象 \& perldbmfilter Perl DBM 層 .Ve .PP .Vb 3 \& perlipc Perl 進程間通信 \& perlfork Perl fork() 相關信息 \& perlnumber Perl 數字的語義 .Ve .PP .Vb 2 \& perlthrtut Perl 線程 \& perlothrtut 舊版 Perl 線程 .Ve .PP .Vb 5 \& perlport Perl 移植嚮導 \& perllocale Perl 語言環境支持 \& perluniintro Perl Unicode 介紹 \& perlunicode Perl Unicode 支持 \& perlebcdic 在 EBCDIC 平臺上運行 Perl .Ve .PP .Vb 1 \& perlsec Perl 安全性 .Ve .PP .Vb 5 \& perlmod Perl modules: 它如何工作 \& perlmodlib Perl modules: 如何寫和用它們 \& perlmodstyle Perl modules: 如何寫好它 \& perlmodinstall Perl modules: 如何從 CPAN 安裝它們 \& perlnewmod Perl modules: 準備釋放出新模塊 .Ve .PP .Vb 1 \& perlutil Perl 附帶的工具 .Ve .PP .Vb 1 \& perlcompile Perl 編譯套件介紹 .Ve .PP .Vb 1 \& perlfilter Perl 源碼過濾 .Ve .Sh "內部以及 C 接口 Internals and C Language Interface" .Vb 7 \& perlembed 在 C/C++ 應用中內置 Perl 的獨特方法 \& perldebguts Perl 調試要點和技巧 \& perlxstut Perl XS \& perlxs Perl XS 應用程序編程接口 \& perlclib 標準 C 庫的內部實現 \& perlguts 爲高級開發者準備的 Perl 內部函數 \& perlcall 從 C 轉換爲 Perl 調用 .Ve .PP .Vb 4 \& perlapi Perl API 列表 (自動生成) \& perlintern Perl 內部函數 (自動生成) \& perliol Perl 以\(lq層\(rq方式實現 IO 用到的 C API \& perlapio Perl 內部 IO 抽象接口 .Ve .PP .Vb 1 \& perlhack 修改 Perl .Ve .Sh "雜項 Miscellaneous" .Vb 2 \& perlbook Perl 書籍信息 \& perltodo Perl 的未來 .Ve .PP .Vb 1 \& perldoc 查看 Pod 格式的 Perl 文檔 .Ve .PP .Vb 11 \& perlhist Perl 歷史記錄 \& perldelta Perl 上一版本以來的變動 \& perl58delta Perl 5.8.0 帶來的變化 \& perl573delta Perl changes in version 5.7.3 \& perl572delta Perl changes in version 5.7.2 \& perl571delta Perl changes in version 5.7.1 \& perl570delta Perl changes in version 5.7.0 \& perl561delta Perl changes in version 5.6.1 \& perl56delta Perl changes in version 5.6 \& perl5005delta Perl changes in version 5.005 \& perl5004delta Perl changes in version 5.004 .Ve .PP .Vb 2 \& perlartistic Perl Artistic License \& perlgpl GNU General Public License .Ve .Sh "語言相關 Language-Specific" .Vb 4 \& perlcn Perl 簡體中文支持 (原文是 EUC-CN 編碼) \& perljp Perl 日本語支持 (原文是 EUC-JP 編碼) \& perlko Perl 朝鮮語支持 (原文是 EUC-KR 編碼) \& perltw Perl 繁體中文支持 (原文是 Big5 編碼) .Ve .Sh "平臺相關 Platform-Specific" .Vb 32 \& perlaix Perl notes for AIX \& perlamiga Perl notes for AmigaOS \& perlapollo Perl notes for Apollo DomainOS \& perlbeos Perl notes for BeOS \& perlbs2000 Perl notes for POSIX-BC BS2000 \& perlce Perl notes for WinCE \& perlcygwin Perl notes for Cygwin \& perldgux Perl notes for DG/UX \& perldos Perl notes for DOS \& perlepoc Perl notes for EPOC \& perlfreebsd Perl notes for FreeBSD \& perlhpux Perl notes for HP-UX \& perlhurd Perl notes for Hurd \& perlirix Perl notes for Irix \& perlmachten Perl notes for Power MachTen \& perlmacos Perl notes for Mac OS (Classic) \& perlmacosx Perl notes for Mac OS X \& perlmint Perl notes for MiNT \& perlmpeix Perl notes for MPE/iX \& perlnetware Perl notes for NetWare \& perlos2 Perl notes for OS/2 \& perlos390 Perl notes for OS/390 \& perlos400 Perl notes for OS/400 \& perlplan9 Perl notes for Plan 9 \& perlqnx Perl notes for QNX \& perlsolaris Perl notes for Solaris \& perltru64 Perl notes for Tru64 \& perluts Perl notes for UTS \& perlvmesa Perl notes for VM/ESA \& perlvms Perl notes for VMS \& perlvos Perl notes for Stratus VOS \& perlwin32 Perl notes for Windows .Ve .PP 默認情況下,上面列出的手冊頁安裝在 \&\fI/usr/local/man/\fR 目錄 .PP 還有大量有關 Perl 模塊的文檔。默認的 perl 配置會將它們安裝到 \fI/usr/local/lib/perl5/man\fR 目錄,(或者 Perl 庫目錄中的 \fIman\fR 子目錄). 它們中的一部分是隨 Perl 發佈的標準文檔, 另外你還可以從中找到第三方的文檔 .PP 你可以用 \fIman\fR\|(1) 程序來查看 Perl 的文檔,只要在配置文件中加入合適的路徑, 或者將路徑設置在 \s-1MANPATH\s0 環境變量中。要找出 perl 所有手冊頁的路徑,只要運行 .PP .Vb 1 \& perl -V:man.dir .Ve .PP 如果路徑有共同點,例如 \fI/usr/local/man/man1\fR 和 \fI/usr/local/man/man3\fR, 你只要將共同點 (\fI/usr/local/man\fR) 加入到 \fIman\fR\|(1) 的配置文件中,或是 \s-1MANPATH\s0 環境變量中。如果它們沒有共同點,就必須全部添加 .PP 如果這樣做沒有效果,你也可以用附帶的 \fIperldoc\fR 腳本來查看模塊信息。也可以找一個 man 的替代程序 .PP 如果你的程序出了問題,又不知道該到哪裏去找幫助,就先試一試 \fB\-w\fR 選項。它會精確地報告錯誤發生在哪一行 .SH "描述 DESCRIPTION" Perl 是一種特別爲掃描複雜文本文件優化過的語言, 從中提取有用的信息,然後據此生成結果。 它也是系統管理任務中很好用的語言。它的目標是實用 (易用,高效,完整) 而不是 精緻 (小,優雅,功能有限) .PP Perl 結合了 (在作者看來) C, \fBsed\fR, \fBawk\fR, 還有 \fBsh\fR 的優點,熟悉它們的人學起 Perl 毫無困難。 (語言學家還會從中發現一些 \fBcsh\fR, Pascal, 甚至 \&\s-1BASIC\-PLUS\s0 中的元素。) 表達式語法與 C 表達式語法緊密對應。與大多數 Unix 工具不同,Perl 不限制 你的數據的大小 \*(-- 只要你有足夠的內存,Perl 可以把你的整個文件當作單一的字符串來享受。 遞歸的深度是無限的。 散列 (有時又叫做\(lq關聯數組\(rq \&\*(L"associative arrays\*(R" ) 會按需生長,以避免性能下降。 Perl 使用精緻的模式匹配技術來保證快速掃描大量數據。 儘管爲掃描文本而優化,Perl 仍然可以處理二進制數據,也可以像使用散列一樣使用 dbm 文件。 設置了 UID 的 Perl 腳本要比 C 程序安全,因爲數據流跟蹤機制可以堵上很多愚蠢的安全漏洞 .PP 如果你遇到了一般適於 \fBsed\fR 或 \fBawk\fR 或 \&\fBsh\fR 處理的問題,但是問題超出了工具的能力, 或者需要更快的處理,你又不想用 C 來寫一大堆倒塌的程序,那麼使用 Perl 吧。 另外,還有很多將 \fBsed\fR 和 \fBawk\fR 腳本轉換爲 Perl 腳本的翻譯器 .PP 但是稍等,還有更多... .PP 自 1993 年開始 (參見 perlhist),Perl 5 進行了幾乎完全的重寫, 提供了以下的功能: .IP "\(bu" 4 模塊性和可複用性 .Sp 詳述在 perlmod, perlmodlib, 和 perlmodinstall 中 .IP "\(bu" 4 可內置可擴展 .Sp 詳述在 perlembed, perlxstut, perlxs, perlcall, perlguts, 和 xsubpp 中 .IP "\(bu" 4 創建功能強大的數據類型 (同時包括多種 \s-1DBM\s0 實現) .Sp 詳述在 perltie 和 AnyDBM_File 中 .IP "\(bu" 4 函數可重載,自動加載,原型化 .Sp 詳述在 perlsub 中 .IP "\(bu" 4 複雜的數據結構嵌套還有匿名函數 .Sp 詳述在 perlreftut, perlref, perldsc, 和 perllol 中 .IP "\(bu" 4 面向對象編程 .Sp 詳述在 perlobj, perlboot, perltoot, perltooc, 和 perlbot 中 .IP "\(bu" 4 支持輕量級進程 (線程) .Sp 詳述在 perlthrtut 和 threads 中 .IP "\(bu" 4 支持 Unicode,國際化和本地化 .Sp 詳述在 perluniintro, perllocale 和 Locale::Maketext 中 .IP "\(bu" 4 變量作用域 .Sp 詳述在 perlsub 中 .IP "\(bu" 4 正則表達式強化 .Sp 詳述在 perlre 中,perlop 中有更多例子 .IP "\(bu" 4 強化的調試工具和交互的 Perl 環境,支持集成的編輯器 .Sp 詳述在 perldebtut, perldebug 和 perldebguts 中 .IP "\(bu" 4 \&\s-1POSIX\s0 1003.1 兼容的庫 .Sp 詳述在 \s-1POSIX\s0 中 .PP Okay, 這些已經是絕對的絕對夠用了 .SH "可用性 AVAILABILITY" Perl 在大部分操作系統上都可用,包含幾乎所有類 Unix 的平臺。參見 perlport 中的 \*(L"Supported Platforms\*(R" 段來查看平臺列表 .SH "環境 ENVIRONMENT" 參見 perlrun .SH "作者 AUTHOR" Larry Wall , with the help of oodles of other folks. .PP 如果你使用 Perl 的成功案例對想在項目中應用 Perl 的人有用, 或者如果你只是想想表達你對 Larry 和 Perl 開發者的感激之情,請寫信到 .SH "文件 FILES" .Vb 1 \& "@INC" locations of perl libraries .Ve .SH "參見 SEE ALSO" .Vb 2 \& a2p awk 到 perl 翻譯器 \& s2p sed 到 perl 翻譯器 .Ve .PP .Vb 3 \& http://www.perl.com/ Perl 官方主頁 \& http://www.cpan.org/ the Comprehensive Perl Archive (Perl 文件中心) \& http://www.perl.org/ Perl Mongers (Perl 用戶組) .Ve .SH "診斷 DIAGNOSTICS" \f(CW\*(C`use warnings\*(C'\fR 編譯指示 (pragma) (還有 \fB\-w\fR 選項) 會產生 一些有用的診斷信息 .PP 參見 perldiag 來查看所有 Perl 診斷信息的含義。 \f(CW\*(C`use diagnostics\*(C'\fR 編譯指示會自動將 Perl 簡短的警告和錯誤消息 轉換爲長格式 .PP 編譯錯誤將給出行號,還有要執行的下一個詞或詞的類型。 (在用 \fB\-e\fR 選項傳給 Perl 的腳本中,每個 \&\fB\-e\fR 視爲一行。) .PP 設置了 UID 的腳本有額外的約束,會產生格式化的錯誤信息,類似 \*(L"Insecure dependency\*(R"。參見 perlsec .PP 我們說過你一定要用 \fB\-w\fR 選項了嗎? .SH "BUGS" \fB\-w\fR 選項不是必要的 .PP Perl 依賴於你的機器中操作的定義,類似於類型轉換, \fIatof()\fR, 還有使用 \fIsprintf()\fR 來做浮點輸出等操作 .PP 如果你的 stdio 在讀寫一個特殊流時需要一個 seek 或是 eof,Perl 也會需要它們。 (這種情況不會在 \fIsysread()\fR 和 \fIsyswrite()\fR 中發生。) .PP 所有內置數據類型都沒有大小限制 (除了內存大小之外),但是還是有一些限制: 變量名不得長於 251 個字符。 診斷信息顯示的行號以短整型數保存,因此行號最大值是 65535 (更大的行號一般會從頭開始) .PP 可以將錯誤報告 (一定要包含完整的配置信息,使用 perl 源碼樹中的 myconfig 程序,或者用 \f(CW\*(C`perl \-V\*(C'\fR 命令得到) 寄給 perlbug@perl.org 。 如果你已經成功編譯 perl, \fIutils/\fR 目錄中的 \fBperlbug\fR 腳本可以用來郵寄錯誤報告 .PP Perl 真正意義是 Pathologically Eclectic Rubbish Lister, 但是 不要告訴任何人我說過它 .SH "注意 NOTES" Perl 的信條是 \*(L"There's more than one way to do it.\*(R" 至於探索有多少種辦法,就是讀者自己的事了 .PP 程序員應有的三種美德是 Laziness, Impatience, 還有 Hubris. 原因呢,請參見駱駝書 .SH "[中文版維護人]" .B bbbush .SH "[中文版最新更新]" .BR 2003.11.29 .SH "《中國linux論壇man手冊翻譯計劃》:" .BI http://cmpp.linuxforum.net .Sh "跋" .br 本頁面中文版由中文 man 手冊頁計劃提供。 .br 中文 man 手冊頁計劃:\fBhttps://github.com/man-pages-zh/manpages-zh\fR