[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 系統管理 > 其它 > 正文
中文man手冊:perl -
本文出自:http://www.cmpp.net 作者: (2001-09-21 15:00:00)

PERL

Section: Perl 程序員參考指南 (1)
Updated: perl 5.005, patch 03

 

NAME[名稱]

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

SYNOPSIS[總覽]

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 手 冊 被 分 為 如 下 的 一 些 小 節 :

perl Perl 概 述 (本 小 節 )
perldelta Perl 自 前 一 版 所 作 的 修 改 
perl5004delta Perl 5.004版 中 所 作 的 修 改 
perlfaq Perl 常 見 問 題 集 (faqs)
perltoc Perl 相 關 文 件 目 錄 表 
perldata Perl 數 據 結 構 
perlsyn Perl 語 法 
perlop Perl 操 作 符 和 優 先 級 
perlre Perl 正則表達式(也有把它叫成"正規表達式"的 )
perlrun Perl 命 令 解 釋 器 的 執 行 及 其 選 項 
perlfunc Perl 固 有 (內 部 )函 數 
perlopentut Perl open() 教 程 
perlvar Perl 預 定 義 的 變 量 
perlsub Perl 子 函 數 
perlmod Perl 模 塊 : 它 們 的 工 作 原 理 
perlmodlib Perl 模 塊 : 如 何 寫 出 和 使 用 自 己 的 模 塊 
perlmodinstall Perl 模 塊 : 如 何 從 CPAN 來 安 裝 模 塊 
perlform Perl 格 式 化 
perllocale Perl 本 地 支 持 
perlref Perl 引 用 
perlreftut Perl 引 用 的 簡 要 介 紹 
perldsc Perl 數 據 結 構 介 紹 
perllol Perl 數據結構: 列表的列表(或叫做:數組的數組)
perltoot Perl OO tutorial
perlobj Perl 對 象 
perltie Perl objects hidden behind simple variables
perlbot Perl OO 竅 門 和 例 子 
perlipc Perl 進 程 間 通 訊 
perlthrtut Perl 進 程 的 教 程 
perldebug Perl 調 試 
perldiag Perl 調 試 (診 斷 )信 息 
perlsec Perl 安 全 
perltrap Perl traps for the unwary
perlport Perl 移 植 指 南 
perlstyle Perl 風 格 指 南 (提 高 程 序 的 易 讀 性 )
perlpod Perl plain old documentation(簡 單 格 式 文 本 )
perlbook Perl 書 籍 信 息 

perlembed Perl 嵌 入 C 或 C++ 程 序 的 方 法 
perlapio Perl internal IO abstraction interface
perlxs Perl XS 程 序 編 程 接 口 
perlxstut Perl XS 教 程 
perlguts Perl internal functions for those doing extensions
(用  實 現 擴 充 的 內 部 函 數 )
perlcall Perl calling conventions from C
(在 c 程 序 中 調 用 perl 的 約 定 )

perlhist Perl 歷 史 記 錄 

(如 果 您 打 算 通 讀 所 有 文 獻 的 話 ,按 照 上 面 所 列 的 順 序 閱 讀 可 以 節 省 一 些 時 間 .)

缺 省 情 況 下 , 上 述 所 有 手 冊 頁 安 裝 在 /usr/local/man/ 目 錄 下 .

Perl 模 塊 還 有 一 些 附 加 的 文 檔 , 缺 省 情 況 下 ,安 裝 在 /usr/local/lib/perl5/man 目 錄 下 (或 者 在 Perl 庫 目 錄 (lib)的 man 子 目 錄 下 ). 有 些 附 加 文 檔 是 Perl 自 帶 的 ,還 有 些 是 第 三 方 模 塊 附 帶 的 .

如 果 路 徑 設 置 正 確 的 話 ,您 應 該 可 以 用 man(1) 來 察 看 Perl 的 文 檔 了 .要 找 到 手 冊 頁 的 安 裝 路 徑 ,使 用 如 下 命 令 :

perl -V:man.dir
如 果 路 徑 有 共 同 的 主 幹 , 比 如 /usr/local/man/man1/usr/local/man/man3, 您 只 需 要 把 主 幹(/usr/local/man) 添 加 到 您 的 man(1) 配 置 文 件 中 或 是 環 境 變 量 MANPATH 中 . 如 果 它 們 的 主 幹 不 同 ,那 您 就 要 把 它 們 都 加 進 去 .

如 果 還 不 行 , 您 還 可 以 使 用 perldoc 腳 本 來 察 看 模 塊 信 息 . 或 者 把 man 重 裝 一 下 .

如 果 您 的 程 序 出 現 了 很 奇 怪 的 錯 誤 ,而 且 您 也 不 知 道 應 察 看 哪 方 面 的 幫 助 ,則 您 可 以 試 試 -w 參 數 . 它 通 常 能 夠 發 現 問 題 出 在 哪 兒 .  

DESCRIPTION[描述]

Perl 是 一 種 計 算 機 語 言 ,它 針 對 以 下 動 作 做 了 優 化 : 掃 描 任 意 文 本 文 件 ,從 文 本 文 件 中 提 取 信 息 ,並 提 交 基 這 些 信 息 的 報 告 . 它 也 是 非 常 適 合 系 統 管 理 任 務 的 語 言 . 本 語 言 以 實 用 (易 用 ,高 效 ,完 整 )為 出 發 點 ,略 欠 優 美 (小 巧 ,文 雅 ,精 煉 ).

Perl 結 合 了 (至 少 作 者 是 這 希 望 的 ) C, sed, awk, 和 sh 的 一 些 最 好 的 特 性 , 所 以 熟 悉 這 些 語 言 的 讀 者 應 該 不 會 感 到 太 困 難 .(語 言 學 家 們 或 許 還 會 發 現 一 些 csh, Pascal, 甚 至 BASIC-PLUS 的 痕 跡 .) 表 達 式 語 法 與 C 的 語 法 極 為 相 近 . 與 大 多 數 Unix 實 用 程 序 不 同 , Perl 不 限 制 您 的 數 據 的 大 小 ---只 要 您 的 內 存 足 夠 大 ,您 可 以 寫 入 任 意 大 小 的 數 據 . 如 果 您 的 內 存 足 夠 大 , Perl 可 以 把 您 的 整 個 文 件 放 在 一 個 字 符 串 中 . 遞 歸 沒 有 深 度 限 制 . 並 且 哈 希 表 (有 時 叫 做 "關 聯 數 組 ")個 以 根 據 需 要 膨 脹 . Perl 能 夠 對 大 批 量 的 數 據 進 行 快 速 的 模 式 匹 配 . 雖 然 是 對 文 本 掃 描 進 行 了 優 化 , 但 是 Perl 仍 然 能 夠 處 理 二 進 制 數 據 , 並 且 可 以 使 dbm 文 件 看 起 來 象 是 哈 希 表 . Setuid Perl scripts are safer than C programs through a dataflow tracing mechanism which prevents many stupid security holes.(這 句 翻 不 準 , 總 之 是 : 安 全 性 能 較 C 為 強 ).

如 果 您 本 來 想 用 sedawksh 寫 個 程 序 ,但 是 它 們 的 功 能 不 夠 ,或 者 是 您 想 運 行 的 快 一 些 ,但 是 又 不 想 用 C 幹 這 樣 的 小 事 ,那 Perl 就 最 適 合 您 了 . 有 些 程 序 可 以 把 您 的 sedawk 腳 本 翻 譯 成 Perl 腳 本 .

不 過 這 可 不 是 全 部 , 還 有 更 多 的 內 容 ...

Perl 第 5 版 幾 乎 是 完 全 重 寫 了 , 它 提 供 如 下 增 加 的 特 性 :
* Many usability enhancements(大 量 增 強 特 性 ) 現 在 可 以 寫 更 多 的 Perl 代 碼 (甚 至 在 正 則 表 達 式 內 部 也 可 以 ). 前 方 定 義 的 含 糊 不 清 的 變 量 可 以 在 面 用 別 的 內 存 標 識 符 取 代 (Formerly cryptic variable names can be replaced by mnemonic identifiers). 錯 誤 信 息 提 供 了 更 多 的 有 用 信 息 , 可 選 的 警 告 信 息 可 以 發 現 新 手 常 犯 的 大 多 數 錯 誤 . 這 裡 只 能 擇 要 說 之 ,更 多 的 特 性 等 您 去 發 現 . 如 果 您 得 到 奇 怪 的 信 息 ,可 以 試 著 使 用 -w 參 數 !!! 如 果 您 未 得 到 奇 怪 的 信 息 ,也 請 試 一 試 -w 參 數 .
* Simplified grammar(簡 單 的 文 法 ) 新 的 編 譯 文 法 是 原 來 的 一 半 大 小 . 很 多 隨 意 的 文 法 得 到 了 規 范 . 保 留 字 減 掉 了 2/3. 盡 管 如 此 ,幾 乎 所 有 原 來 的 Perl 腳 本 都 可 以 不 做 改 變 而 正 常 運 行 .
* Lexical scoping(詞 匯 作 用 域 ) Perl 變 量 現 在 可 以 定 義 在 詞 匯 作 用 域 內 , 就 象 C 中 的 "auto" 變 量 . 這 不 僅 更 高 效 ,而 且 也 有 利 "編 寫 大 的 程 序 ". Anonymous subroutines exhibit deep binding of lexical variables (closures). (這 句 不 會 )
* Arbitrarily nested data structures(任 意 嵌 套 數 據 結 構 ) 任 何 標 量 值 , 包 括 數 組 元 素 , 現 在 都 可 以 包 含 對 其 它 變 量 或 是 子 程 序 的 引 用 . 您 可 以 輕 鬆 的 創 建 匿 名 變 量 和 子 程 序 . Perl 為 您 管 理 您 的 引 用 .
* Modularity and reusability(模 塊 性 和 可 重 用 性 ) The Perl library is now defined in terms of modules which can be easily shared among various packages. A package may choose to import all or a portion of a module's published interface. Pragmas (that is, compiler directives) are defined and used by the same mechanism.
* Object-oriented programming(面 向 對 象 編 程 ) 包 就 象 是 類 . 動 態 多 重 繼 承 和 虛 擬 函 數 已 經 得 到 支 持 ,並 且 沒 有 太 多 的 新 語 法 . 文 件 句 柄 可 以 作 為 對 象 來 創 建 .
* Embeddable and Extensible(嵌 入 和 擴 充 ) Perl 現 在 可 以 容 易 的 嵌 入 到 您 的 C 或 C++ 程 序 中 , 可 以 通 過 文 字 界 面 調 用 其 它 子 程 序 或 者 被 調 用 . XS 預 處 理 程 序 用 將 您 的 C 或 C++ 子 程 序 加 入 到 Perl. 現 在 支 持 動 態 模 塊 調 用 , Perl 本 身 就 可 以 做 成 一 個 動 態 庫 .
* POSIX compliant(posix 兼 容 ) 一 個 主 要 的 新 模 塊 就 是 POSIX 模 塊 , 提 供 了 對 所 有 POSIX 子 程 序 和 定 義 的 存 取 功 能 , via object classes where appropriate.
* Package constructors and destructors(包 構 造 器 和 析 構 器 ) The new BEGIN and END blocks provide means to capture control as a package is being compiled, and after the program exits. As a degenerate case they work just like awk's BEGIN and END when you use the -p or -n switches.
* Multiple simultaneous DBM implementations(同 時 執 行 多 個 DBM) A Perl program may now access DBM, NDBM, SDBM, GDBM, and Berkeley DB files from the same script simultaneously. In fact, the old dbmopen interface has been generalized to allow any variable to be tied to an object class which defines its access methods.
* Subroutine definitions may now be autoloaded(子 程 序 定 義 可 自 動 裝 載 ) In fact, the AUTOLOAD mechanism also allows you to define any arbitrary semantics for undefined subroutine calls. It's not for just autoloading.
* Regular expression enhancements(正 則 表 達 式 增 強 ) You can now specify nongreedy quantifiers. You can now do grouping without creating a backreference. You can now write regular expressions with embedded whitespace and comments for readability. A consistent extensibility mechanism has been added that is upwardly compatible with all old regular expressions.
* Innumerable Unbundled Modules(數 不 清 的 分 類 模 塊 ) The Comprehensive Perl Archive Network described in the perlmodlib manpage contains hundreds of plug-and-play modules full of reusable code. See http://www.perl.com/CPAN for a site near you.
* Compilability(編 譯 能 力 ) 還 沒 有 完 全 做 好 ,不 過 perl-to-C 編 譯 器 已 經 可 以 工 作 了 . 可 以 產 生 可 移 植 的 字 節 代 碼 , C 或 是 優 化 的 C 代 碼 .

好 啦 ,廣 告 做 完 了 .  

AVAILABILITY[實用性]

Perl 適 用 大 多 數 主 流 操 作 系 統 平 台 , 包 括 大 部 分 類 -Unix 平 台 . 下 面 是 截 至 1999年 2月 可 以 運 行 Perl 5.005_03 的 平 台 .

下 列 平 台 可 以 使 用 如 下 網 站 提 供 的 標 準 源 代 碼 建 立 Perl http://www.perl.com/CPAN/src/index.html

AIX Linux SCO ODT/OSR
A/UX MachTen Solaris
BeOS MPE/iX SunOS
BSD/OS NetBSD SVR4
DG/UX NextSTEP Tru64 UNIX 3)
DomainOS OpenBSD Ultrix
DOS DJGPP 1) OpenSTEP UNICOS
DYNIX/ptx OS/2 VMS
FreeBSD OS390 2) VOS
HP-UX PowerMAX Windows 3.1 1)
Hurd QNX Windows 95 1) 4)
IRIX Windows 98 1) 4)
Windows NT 1) 4)

1) DOS 模 式 下 DOS 或 OS/2 端 口 都 可 用 
(in DOS mode DOS or OS/2 ports can be used)
2) 原 來 是 MVS
3) 原 來 是 Digital UNIX ,更 早 前 是 DEC OSF/1
4) 編 譯 器 : Borland, Cygwin32, Mingw32 EGCS/GCC, VC++

以 下 平 台 可 以 建 立 Perl ,但 是 未 對 5.005_03 進 行 測 試 , 原 因 是 這 些 硬 /軟 件 比 較 稀 少 ,或 是 我 們 沒 有 使 用 這 些 平 台 的 人 員 ,或 是 二 者 兼 有 .


3b1 FPS Plan 9 .br AmigaOS GENIX PowerUX .br ConvexOS Greenhills RISC/os .br CX/UX ISC Stellar .br DC/OSx MachTen 68k SVR2 .br DDE SMES MiNT TI1500 .br DOS EMX MPC TitanOS .br Dynix NEWS-OS UNICOS/mk .br EP/IX Opus Unisys Dynix .br ESIX Unixware

下 列 平 台 預 計 在 5.006 版 可 以 支 持 ,但 是 5.005_03 還 不 行 :

BS2000
Netware
Rhapsody
VM/ESA

下 列 平 台 有 特 定 的 源 代 碼 和 二 進 制 程 序 ,可 從 http://www.perl.com/CPAN/ports/index.html. 得 到

Perl release

AS/400 5.003
MacOS 5.004
Netware 5.003_07
Tandem Guardian 5.004

下 列 平 台 只 有 可 用 的 二 進 制 程 序 ,可 從 http://www.perl.com/CPAN/ports/index.html. 得 到

Perl release

Acorn RISCOS 5.005_02
AOS 5.002
LynxOS 5.004_02

 

ENVIRONMENT[環境]

參 考 perlrun 手 冊 頁 .  

AUTHOR[作者]

Larry Wall <larry@wall.org>, 以 及 很 多 人 的 幫 助 .

如 果 您 的 成 功 故 事 或 是 某 些 例 証 有 助 增 加 其 他 人 使 用 Perl 的 興 趣 或 信 心 ,或 是 您 想 表 示 對 Larry 和 其 它 開 發 者 的 感 謝 , 您 可 以 寫 信 到 <perl-thanks@perl.org>.  

FILES[相關文件]

"@INC" perl 庫 文 件 的 位 置 

 

SEE ALSO[另見]

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

 

DIAGNOSTICS[診斷]

-w 開 關 選 項 可 以 產 生 好 的 診 斷 信 息 .

perldiag 手 冊 頁 對 所 有 的 診 斷 信 息 做 了 解 釋 . 預 編 譯 命 令 use diagnostics 自 動 把 簡 短 的 警 告 和 錯 誤 信 息 轉 為 詳 細 描 述 (turns warnings and errors into these longer forms).

編 譯 錯 誤 會 給 出 錯 誤 行 號 , with an indication of the next token or token type that was to be examined. (In the case of a script passed to Perl via -e switches, each -e is counted as one line.)

Setuid scripts have additional constraints that can produce error messages such as ``Insecure dependency''. See the perlsec manpage.

Did we mention that you should definitely consider using the -w switch?  

BUGS[缺憾]

-w 選 項 是 非 強 制 的 .

Perl is at the mercy of your machine's definitions of various operations such as type casting, atof(), and floating-point output with sprintf().

如 果 您 的 stdio(標 準 輸 入 /出 ) 需 要 在 讀 寫 特 定 的 流 文 件 時 進 行 定 位 或 是 結 束 (requires a seek or eof between reads and writes on a particular stream), Perl 就 也 需 要 . (不 適 用 sysread()syswrite().)

雖 然 內 建 數 據 類 型 沒 有 大 小 限 制 (不 考 慮 內 存 大 小 ), 還 是 有 一 些 其 它 的 限 制 : 變 量 名 不 得 長 251 字 符 . 診 斷 程 序 中 的 行 號 實 際 上 存 儲 為 短 整 型 (short int), 所 以 最 大 到 65535 (高 過 的 行 號 一 般 會 發 生 回 繞 ).

可 以 將 bug 報 告 (請 使 用 perl 源 代 碼 目 錄 下 的 myconfig 程 序 產 生 您 的 配 置 文 件 的 詳 細 信 息 ,或 使 用 perl -V) 寄 到 <perlbug@perl.com>. 如 果 您 已 經 成 功 編 譯 了 perl , utils/ 子 目 錄 下 的 perlbug 腳 本 可 以 幫 您 郵 寄 bug 報 告 .

Perl actually stands for Pathologically Eclectic Rubbish Lister, but don't tell anyone I said that.  

NOTES[注意]

Perl 的 格 言 是 "解 決 問 題 的 方 法 不 止 一 個 "( ``There's more than one way to do it.'') , 有 很 多 練 習 要 您 去 做 .( Divining how many more is left as an exercise to the reader.)

程 序 員 的 三 大 美 德 是 : 懶 惰 ,急 躁 和 傲 慢 . 至 原 因 嘛 ,請 參 考 駱 駝 冊 (譯 者 注 : 駱 駝 冊 是 Larry Wall 等 所 寫 的 perl 編 程 手 冊 )  

[中文版維護人]

姓 名 : Redcandle

E-mail: redcandle51@chinaren.com  

[中文版最新更新]

2000年 11月 17日  

《中文 MAN PAGE 計劃》: http://www.cmpp.net/

(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
 

★  樊強制作 歡迎分享  ★