perl [-sTuU] [-hv] [-V [: configvar]] [-cw] [-d [: debugger]] [-D [number/list]] [-pna] [-F pattern] [-l [octal]] [-0 [octal]] [-I dir] [-m [-] module] [-M [-] 'module...'] [-P] [-S] [-x [dir]] [-i [extension]] [-e 'command'] [-–] [programfile] [argument]...
为方便阅读,Perl 手册分成以下几个部分。
OVERVIEW(概述)
perl Perl overview (this section) perlintro Perl introduction for beginners perltoc Perl documentation table of contents
TUTORIALS(教程)
perlreftut Perl references short introduction perldsc Perl data structures intro perllol Perl data structures: arrays of arrays
perlrequick Perl regular expressions quick start perlretut Perl regular expressions tutorial
perlboot Perl OO tutorial for beginners perltoot Perl OO tutorial, part 1 perltooc Perl OO tutorial, part 2 perlbot Perl OO tricks and examples
perlstyle Perl style guide
perlcheat Perl cheat sheet perltrap Perl traps for the unwary perldebtut Perl debugging tutorial
perlfaq Perl frequently asked questions perlfaq1 General Questions About Perl perlfaq2 Obtaining and Learning about Perl perlfaq3 Programming Tools perlfaq4 Data Manipulation perlfaq5 Files and Formats perlfaq6 Regexes perlfaq7 Perl Language Issues perlfaq8 System Interaction perlfaq9 Networking
REFERENCE MANUAL(参考手册)
perlsyn Perl syntax perldata Perl data structures perlop Perl operators and precedence perlsub Perl subroutines perlfunc Perl built-in functions perlopentut Perl open() tutorial perlpacktut Perl pack() and unpack() tutorial perlpod Perl plain old documentation perlpodspec Perl plain old documentation format specification perlrun Perl execution and options perldiag Perl diagnostic messages perllexwarn Perl warnings and their control perldebug Perl debugging perlvar Perl predefined variables perlre Perl regular expressions, the rest of the story perlreref Perl regular expressions quick reference perlref Perl references, the rest of the story perlform Perl formats perlobj Perl objects perltie Perl objects hidden behind simple variables perldbmfilter Perl DBM filters
perlipc Perl interprocess communication perlfork Perl fork() information perlnumber Perl number semantics
perlthrtut Perl threads tutorial perlothrtut Old Perl threads tutorial
perlport Perl portability guide perllocale Perl locale support perluniintro Perl Unicode introduction perlunicode Perl Unicode support perlebcdic Considerations for running Perl on EBCDIC platforms
perlsec Perl security
perlmod Perl modules: how they work perlmodlib Perl modules: how to write and use perlmodstyle Perl modules: how to write modules with style perlmodinstall Perl modules: how to install from CPAN perlnewmod Perl modules: preparing a new module for distribution
perlutil utilities packaged with the Perl distribution
perlcompile Perl compiler suite intro
perlfilter Perl source filters
INTERNALS AND C LANGUAGE INTERFACE(内部实现及 C 语言接口)
perlembed Perl ways to embed perl in your C or C++ application perldebguts Perl debugging guts and tips perlxstut Perl XS tutorial perlxs Perl XS application programming interface perlclib Internal replacements for standard C library functions perlguts Perl internal functions for those doing extensions perlcall Perl calling conventions from C
perlapi Perl API listing (autogenerated) perlintern Perl internal functions (autogenerated) perliol C API for Perl's implementation of IO in Layers perlapio Perl internal IO abstraction interface
perlhack Perl hackers guide
MISCELLANEOUS(其他)
perlbook Perl book information perltodo Perl things to do
perldoc Look up Perl documentation in Pod format
perlhist Perl history records perldelta Perl changes since previous version perl583delta Perl changes in version 5.8.3 perl582delta Perl changes in version 5.8.2 perl581delta Perl changes in version 5.8.1 perl58delta Perl changes in version 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 for Simplified Chinese (in EUC-CN) perljp Perl for Japanese (in EUC-JP) perlko Perl for Korean (in EUC-KR) perltw Perl for Traditional Chinese (in Big5)
PLATFORM-SPECIFIC(特定于平台的注意事项)
perlsolaris Perl notes for Solaris
如果不熟悉 Perl,则应当首先阅读 perlintro,这是一个专为出初学者准备的一般性介绍,提供了一些背景知识,有助于引导您阅读其他内容详尽的 Perl 文档。为方便阅读,Perl 手册分成了若干部分。
上文列出的手册页安装在 /usr/perl5/man/ 目录中。
Perl 模块的内容详尽的附加文档现已可用。此附加文档位于 /usr/perl5/man 目录中。此附加文档的部分内容是随 Perl 发布的标准内容,但您也可以从中找到任何客户安装的第三方模块的文档。
查看 Perl 文档时,可以使用 man(1) 并将 /usr/perl5/man 加入 MANPATH 环境变量。请注意,系统不支持针对 Perl 手册页运行 catman(1M)。若要了解其他 Solaris 特定详细信息,请参见下文的“附注”部分。
您也可以使用附带的 /usr/perl5/bin/perldoc 脚本查看 Perl 信息。
如果程序出现异常问题而您又不知道应该从哪里寻求帮助,不妨首先尝试一下 –w 开关。它通常能够准确指出问题所在。
Perl 是一种针对扫描任意文本文件、从文本文件中提取信息以及输出基于这些信息的报告等操作进行了优化的语言。它也是一种非常适合用于众多系统管理任务的语言。该语言以实用(易用、高效、全面)为出发点,而不是追求优美(小巧、优雅、精炼)。
Perl 将 C、sed、awk 和 sh 的许多最佳功能集于一身,有助于熟悉这些语言的人轻松上手使用(当然,这是作者本人的观点)。(语言历史学家也会在其中发现 csh、Pascal 乃至 BASIC–PLUS 的一些痕迹。)表达式语法和 C 表达式语法非常相似。与大多数 Unix 实用程序不同,Perl 不会随意限制数据大小,只要内存足够,Perl 可以将整个文件视为单个字符串全部读入内存。递归深度不受限制。而散列(有时称作“关联数组”)使用的表会按需增长,以防止性能下降。Perl 可以使用复杂的模式匹配技术来快速扫描大量数据。尽管针对文本扫描进行了优化,但 Perl 也能处理二进制数据,而且能让 dbm 文件看起来像是散列。Setuid 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 中介绍。
好了,这些肯定足够了。
Solaris 附带的 Perl 安装在 /usr/perl5 下,而非缺省的 /usr/local 位置。因此,它能够与客户自行安装在缺省 /usr/local 位置的 Perl 共存。
您选择安装的任何其他模块将位于 /usr/perl5/site_perl/5.8.4 目录中。/usr/perl5/vendor_perl 目录专为 SMI 提供的模块预留。
请注意,Perl 实用程序脚本(例如,perldoc 和 perlbug)都位于 /usr/perl5/bin 目录中,因此,如果您想使用这些脚本,您需要将 /usr/perl5/bin 加入您的 PATH 环境变量。
另请参见 perlrun 手册页。
Larry Wall,并得到了其他许多人的帮助。
如果您的 Perl 成功案例和感言能帮助那些希望在其应用程序中提倡使用 Perl 的其他人,或者只是希望向 Larry 以及 Perl 开发者表示谢意,请写信给 perl–thanks@perl.org。
Perl 库的位置
有关下列属性的说明,请参见 attributes(5):
|
Perl 适用于大多数操作系统,包括几乎所有类 Unix 平台。请参见 perlport 中介绍支持平台的部分了解支持的平台列表。
脚本接口、XSUB 接口和目录布局为 Committed(已确定)。二进制接口为 Uncommitted(未确定)。
awk 到 perl 转换器
sed 到 perl 转换器
Perl 主页
全面的 Perl 归档
Perl Monger(Perl 用户组)
`use warnings' pragma(和 –w 开关)可以生成一些有用的诊断信息。
请参见 perldiag 了解所有 Perl 诊断信息的解释。`use diagnostics' pragma 可以自动将 Perl 的常见扼要警告和错误转变为更长的格式。
编译错误会告诉您发生错误的行号,同时指示下一个接受检查的标记或标记类型。(在通过 –e 开关传递到 Perl 的脚本中,每个 –e 都算作一行。)
Setuid 脚本具有更多约束,会生成 "Insecure dependency"(不安全的依赖项)之类的错误消息。请参见 perlsec。
我们是否说过,您应当考虑使用 –w 开关?
Perl 5.8.4 设计用于识别大文件和使用 64 位整数,尽管解释程序本身为 32 位应用程序 (LP32)。要查看详细的配置信息,请使用 perl –V 和 perlbug –dv。
如果希望使用 gcc 从 CPAN 构建并安装附加模块,可以使用 /usr/perl5/5.8.4/bin/perlgcc 脚本;有关详细信息,请参见 perlgcc(1)。
如果希望构建和安装自有的 Perl 版本,则不应删除 /usr/perl5 下的 Perl 5.8.4 版本,因为许多系统实用程序需要使用这一版本。Perl 软件包名称如下所示:
SUNWperl584core Perl 5.8.4 (Core files) SUNWperl584usr Perl 5.8.4 (Non-core files) SUNWperl584man Perl 5.8.4 (Manual pages)
Solaris 10 与 Solaris 9 一样,也附带 Perl 5.6.1 版本。如果您正在升级系统并希望继续使用 Perl 5.6.1 作为缺省的 Perl 版本,您应当参考 perlsolaris 手册页,了解详细的操作步骤。请注意,如果条件允许,您应尽快升级安装内容,以使用 Perl 5.8.4,因为未来的版本中可能会删除 Perl 5.6.1。
Perl 的格言是“条条大路通罗马”。具体有多少条路就当作练习留给读者去思考吧。
程序员的三个主要美德是:懒惰、急躁和傲慢。具体原因请参见《Camel Book》(《骆驼书》)。
–w 开关并不是必需的。
Perl 完全由计算机上的各种操作定义支配,例如类型转换、atof() 以及通过 sprintf() 进行的浮点输出。
如果 stdio 需要在特定流的读取和写入操作之间执行查找或 eof 操作,Perl 同样如此。(这不适用于 sysread() 和 syswrite()。)
尽管内建的数据类型都没有任意大小限制(内存大小除外),但依然有一些任意限制,即给定的变量名称长度不能超过 251 个字符。诊断信息显示的行号在内部存储为短整数,因此,最大不能超过 65535(使用更大的数字时通常会重头开始计数)。
您可以通过邮件将错误报告(务必附上使用 Perl 源代码树中的 myconfig 程序或者 `perl –V' 输出的完整配置信息)发到 perlbug@perl.org。如果成功编译了 Perl,可使用 utils/ 子目录下的 perlbug 脚本帮助您通过邮件发送错误报告。
Perl 实际上是 Pathologically Eclectic Rubbish Lister(胡乱拼凑的大杂烩)的首字母缩写,但不要告诉任何人我这么说过。