PERL(1) | Perl Programmers Reference Guide | PERL(1) |
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 新手,还是从 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 选项。它会精确地报告错误发生在哪一行
描述 DESCRIPTION¶
Perl 是一种特别为扫描复杂文本文件优化过的语言, 从中提取有用的信息,然后据此生成结果。 它也是系统管理任务中很好用的语言。它的目标是实用 (易用,高效,完整) 而不是 精致 (小,优雅,功能有限)
Perl 结合了 (在作者看来) C, sed, awk, 还有 sh 的优点,熟悉它们的人学起 Perl 毫无困难。 (语言学家还会从中发现一些 csh, Pascal, 甚至 BASIC-PLUS 中的元素。) 表达式语法与 C 表达式语法紧密对应。与大多数 Unix 工具不同,Perl 不限制 你的数据的大小 -- 只要你有足够的内存,Perl 可以把你的整个文件当作单一的字符串来享受。 递归的深度是无限的。 散列 (有时又叫做“关联数组” "associative arrays" ) 会按需生长,以避免性能下降。 Perl 使用精致的模式匹配技术来保证快速扫描大量数据。 尽管为扫描文本而优化,Perl 仍然可以处理二进制数据,也可以像使用散列一样使用 dbm 文件。 设置了 UID 的 Perl 脚本要比 C 程序安全,因为数据流跟踪机制可以堵上很多愚蠢的安全漏洞
如果你遇到了一般适于 sed 或 awk 或 sh 处理的问题,但是问题超出了工具的能力, 或者需要更快的处理,你又不想用 C 来写一大堆倒塌的程序,那么使用 Perl 吧。 另外,还有很多将 sed 和 awk 脚本转换为 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, 这些已经是绝对的绝对够用了
可用性 AVAILABILITY¶
Perl 在大部分操作系统上都可用,包含几乎所有类 Unix 的平台。参见 perlport 中的 "Supported Platforms" 段来查看平台列表
环境 ENVIRONMENT¶
参见 perlrun
作者 AUTHOR¶
Larry Wall <larry@wall.org>, with the help of oodles of other folks.
如果你使用 Perl 的成功案例对想在项目中应用 Perl 的人有用, 或者如果你只是想想表达你对 Larry 和 Perl 开发者的感激之情,请写信到 <perl-thanks@perl.org>
文件 FILES¶
"@INC" locations of perl libraries
参见 SEE ALSO¶
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 用户组)
诊断 DIAGNOSTICS¶
"use warnings" 编译指示 (pragma) (还有 -w 选项) 会产生 一些有用的诊断信息
参见 perldiag 来查看所有 Perl 诊断信息的含义。 "use diagnostics" 编译指示会自动将 Perl 简短的警告和错误消息 转换为长格式
编译错误将给出行号,还有要执行的下一个词或词的类型。 (在用 -e 选项传给 Perl 的脚本中,每个 -e 视为一行。)
设置了 UID 的脚本有额外的约束,会产生格式化的错误信息,类似 "Insecure dependency"。参见 perlsec
我们说过你一定要用 -w 选项了吗?
BUGS¶
-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, 但是 不要告诉任何人我说过它
注意 NOTES¶
Perl 的信条是 "There's more than one way to do it." 至于探索有多少种办法,就是读者自己的事了
程序员应有的三种美德是 Laziness, Impatience, 还有 Hubris. 原因呢,请参见骆驼书
[中文版维护人]¶
bbbush <bbbush@163.com>
[中文版最新更新]¶
2003.11.29
《中国linux论坛man手册翻译计划》:¶
2003-09-02 | perl v5.8.1 |