Arch manual pages

PERL(1) Perl Programmers Reference Guide PERL(1)

perl - Practical Extraction and Report Language (實用摘錄和彙報語言)

perl-sTuU ] [ -hv ] [ -V[:configvar] ] [ -cw ] [ -d[:debugger] ] [ -D[number/list] ] [ -pna ] [ -Fpattern ] [ -l[octal] ] [ -0[octal] ] [ -Idir ] [ -m[-]module ] [ -M[-]'module...' ] [ -P ] [ -S ] [ -x[dir] ] [ -i[extension] ] [ -e 'command' ] [ -- ] [ programfile ] [ argument ]...

如果你是 Perl 新手,還是從 perlintro 看起吧,那是爲初學者準備的簡單介紹,提供了一些背景知識,幫助你瀏覽 Perl 其餘的大量文檔

爲方便閱讀,Perl 手冊分成了很多章

概述 Overview

    perl                Perl 概述 (本小節) 
    perlintro           Perl 介紹 (爲新手準備) 
    perltoc             Perl 目錄 (所有內容列表) 

教程 Tutorials

    perlreftut          Perl 引用 
    perldsc             Perl 數據結構 
    perllol             Perl 高級數據結構 

    perlrequick         Perl 正則表達式快速入門 
    perlretut           Perl 正則表達式 

    perlboot            Perl OO 面向對象 入門 
    perltoot            Perl OO 面向對象 教程 (第一部分) 
    perltooc            Perl OO 面向對象 教程 (第二部分) 
    perlbot             Perl OO 面向對象 竅門和例子 

    perlstyle           Perl 程序風格 

    perlcheat           Perl 投機取巧 
    perltrap            Perl 大意者的陷阱 
    perldebtut          Perl 調試 

    perlfaq             Perl 常見問題 
      perlfaq1          有關 Perl 的一般問題
      perlfaq2          獲取/學習 Perl 
      perlfaq3          編程工具
      perlfaq4          數據操縱
      perlfaq5          文件與文件格式
      perlfaq6          正則表達式
      perlfaq7          Perl 語言本身的問題
      perlfaq8          與操作系統交互
      perlfaq9          網絡

參考手冊 Reference Manual

    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 層

    perlipc             Perl 進程間通信
    perlfork            Perl fork() 相關信息
    perlnumber          Perl 數字的語義

    perlthrtut          Perl 線程
      perlothrtut       舊版 Perl 線程

    perlport            Perl 移植嚮導
    perllocale          Perl 語言環境支持
    perluniintro        Perl Unicode 介紹
    perlunicode         Perl Unicode 支持
    perlebcdic          在 EBCDIC 平臺上運行 Perl

    perlsec             Perl 安全性

    perlmod             Perl modules: 它如何工作
    perlmodlib          Perl modules: 如何寫和用它們
    perlmodstyle        Perl modules: 如何寫好它
    perlmodinstall      Perl modules: 如何從 CPAN 安裝它們
    perlnewmod          Perl modules: 準備釋放出新模塊

    perlutil            Perl 附帶的工具

    perlcompile         Perl 編譯套件介紹

    perlfilter          Perl 源碼過濾

內部以及 C 接口 Internals and C Language Interface

    perlembed           在 C/C++ 應用中內置 Perl 的獨特方法
    perldebguts         Perl 調試要點和技巧
    perlxstut           Perl XS 
    perlxs              Perl XS 應用程序編程接口
    perlclib            標準 C 庫的內部實現
    perlguts            爲高級開發者準備的 Perl 內部函數
    perlcall            從 C 轉換爲 Perl 調用

    perlapi             Perl API 列表 (自動生成)
    perlintern          Perl 內部函數 (自動生成)
    perliol             Perl 以“層”方式實現 IO 用到的 C API 
    perlapio            Perl 內部 IO 抽象接口

    perlhack            修改 Perl 

雜項 Miscellaneous

    perlbook            Perl 書籍信息 
    perltodo            Perl 的未來

    perldoc             查看 Pod 格式的 Perl 文檔

    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

    perlartistic        Perl Artistic License
    perlgpl             GNU General Public License

語言相關 Language-Specific

    perlcn              Perl 簡體中文支持 (原文是 EUC-CN 編碼)
    perljp              Perl 日本語支持 (原文是 EUC-JP 編碼)
    perlko              Perl 朝鮮語支持 (原文是 EUC-KR 編碼)
    perltw              Perl 繁體中文支持 (原文是 Big5 編碼)

平臺相關 Platform-Specific

    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

默認情況下,上面列出的手冊頁安裝在 /usr/local/man/ 目錄

還有大量有關 Perl 模塊的文檔。默認的 perl 配置會將它們安裝到 /usr/local/lib/perl5/man 目錄,(或者 Perl 庫目錄中的 man 子目錄). 它們中的一部分是隨 Perl 發佈的標準文檔, 另外你還可以從中找到第三方的文檔

你可以用 man(1) 程序來查看 Perl 的文檔,只要在配置文件中加入合適的路徑, 或者將路徑設置在 MANPATH 環境變量中。要找出 perl 所有手冊頁的路徑,只要運行

    perl -V:man.dir

如果路徑有共同點,例如 /usr/local/man/man1/usr/local/man/man3, 你只要將共同點 (/usr/local/man) 加入到 man(1) 的配置文件中,或是 MANPATH 環境變量中。如果它們沒有共同點,就必須全部添加

如果這樣做沒有效果,你也可以用附帶的 perldoc 腳本來查看模塊信息。也可以找一個 man 的替代程序

如果你的程序出了問題,又不知道該到哪裏去找幫助,就先試一試 -w 選項。它會精確地報告錯誤發生在哪一行

Perl 是一種特別爲掃描複雜文本文件優化過的語言, 從中提取有用的信息,然後據此生成結果。 它也是系統管理任務中很好用的語言。它的目標是實用 (易用,高效,完整) 而不是 精緻 (小,優雅,功能有限)

Perl 結合了 (在作者看來) C, sed, awk, 還有 sh 的優點,熟悉它們的人學起 Perl 毫無困難。 (語言學家還會從中發現一些 csh, Pascal, 甚至 BASIC-PLUS 中的元素。) 表達式語法與 C 表達式語法緊密對應。與大多數 Unix 工具不同,Perl 不限制 你的數據的大小 -- 只要你有足夠的內存,Perl 可以把你的整個文件當作單一的字符串來享受。 遞歸的深度是無限的。 散列 (有時又叫做“關聯數組” "associative arrays" ) 會按需生長,以避免性能下降。 Perl 使用精緻的模式匹配技術來保證快速掃描大量數據。 儘管爲掃描文本而優化,Perl 仍然可以處理二進制數據,也可以像使用散列一樣使用 dbm 文件。 設置了 UID 的 Perl 腳本要比 C 程序安全,因爲數據流跟蹤機制可以堵上很多愚蠢的安全漏洞

如果你遇到了一般適於 sedawksh 處理的問題,但是問題超出了工具的能力, 或者需要更快的處理,你又不想用 C 來寫一大堆倒塌的程序,那麼使用 Perl 吧。 另外,還有很多將 sedawk 腳本轉換爲 Perl 腳本的翻譯器

但是稍等,還有更多...

自 1993 年開始 (參見 perlhist),Perl 5 進行了幾乎完全的重寫, 提供了以下的功能:

  • 模塊性和可複用性

    詳述在 perlmod, perlmodlib, 和 perlmodinstall 中

  • 可內置可擴展

    詳述在 perlembed, perlxstut, perlxs, perlcall, perlguts, 和 xsubpp 中

  • 創建功能強大的數據類型 (同時包括多種 DBM 實現)

    詳述在 perltie 和 AnyDBM_File 中

  • 函數可重載,自動加載,原型化

    詳述在 perlsub 中

  • 複雜的數據結構嵌套還有匿名函數

    詳述在 perlreftut, perlref, perldsc, 和 perllol 中

  • 面向對象編程

    詳述在 perlobj, perlboot, perltoot, perltooc, 和 perlbot 中

  • 支持輕量級進程 (線程)

    詳述在 perlthrtut 和 threads 中

  • 支持 Unicode,國際化和本地化

    詳述在 perluniintro, perllocale 和 Locale::Maketext 中

  • 變量作用域

    詳述在 perlsub 中

  • 正則表達式強化

    詳述在 perlre 中,perlop 中有更多例子

  • 強化的調試工具和交互的 Perl 環境,支持集成的編輯器

    詳述在 perldebtut, perldebug 和 perldebguts 中

  • POSIX 1003.1 兼容的庫

    詳述在 POSIX 中

Okay, 這些已經是絕對的絕對夠用了

Perl 在大部分操作系統上都可用,包含幾乎所有類 Unix 的平臺。參見 perlport 中的 "Supported Platforms" 段來查看平臺列表

參見 perlrun

Larry Wall <larry@wall.org>, with the help of oodles of other folks.

如果你使用 Perl 的成功案例對想在項目中應用 Perl 的人有用, 或者如果你只是想想表達你對 Larry 和 Perl 開發者的感激之情,請寫信到 <perl-thanks@perl.org>

 "@INC"                 locations of perl libraries

 a2p    awk 到 perl 翻譯器
 s2p    sed 到 perl 翻譯器

 http://www.perl.com/       Perl 官方主頁
 http://www.cpan.org/       the Comprehensive Perl Archive (Perl 文件中心)
 http://www.perl.org/       Perl Mongers (Perl 用戶組)

"use warnings" 編譯指示 (pragma) (還有 -w 選項) 會產生 一些有用的診斷信息

參見 perldiag 來查看所有 Perl 診斷信息的含義。 "use diagnostics" 編譯指示會自動將 Perl 簡短的警告和錯誤消息 轉換爲長格式

編譯錯誤將給出行號,還有要執行的下一個詞或詞的類型。 (在用 -e 選項傳給 Perl 的腳本中,每個 -e 視爲一行。)

設置了 UID 的腳本有額外的約束,會產生格式化的錯誤信息,類似 "Insecure dependency"。參見 perlsec

我們說過你一定要用 -w 選項了嗎?

-w 選項不是必要的

Perl 依賴於你的機器中操作的定義,類似於類型轉換, atof(), 還有使用 sprintf() 來做浮點輸出等操作

如果你的 stdio 在讀寫一個特殊流時需要一個 seek 或是 eof,Perl 也會需要它們。 (這種情況不會在 sysread()syswrite() 中發生。)

所有內置數據類型都沒有大小限制 (除了內存大小之外),但是還是有一些限制: 變量名不得長於 251 個字符。 診斷信息顯示的行號以短整型數保存,因此行號最大值是 65535 (更大的行號一般會從頭開始)

可以將錯誤報告 (一定要包含完整的配置信息,使用 perl 源碼樹中的 myconfig 程序,或者用 "perl -V" 命令得到) 寄給 perlbug@perl.org 。 如果你已經成功編譯 perl, utils/ 目錄中的 perlbug 腳本可以用來郵寄錯誤報告

Perl 真正意義是 Pathologically Eclectic Rubbish Lister, 但是 不要告訴任何人我說過它

Perl 的信條是 "There's more than one way to do it." 至於探索有多少種辦法,就是讀者自己的事了

程序員應有的三種美德是 Laziness, Impatience, 還有 Hubris. 原因呢,請參見駱駝書

bbbush <bbbush@163.com>

2003.11.29

http://cmpp.linuxforum.net

本頁面中文版由中文 man 手冊頁計劃提供。
中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh

2003-09-02 perl v5.8.1