手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

perl(1)

名称

perl - 实用的提取与报告语言

用法概要

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(教程)

Tutorials

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

Platform-Specific

Platform-Specific

如果不熟悉 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、sedawksh 的许多最佳功能集于一身,有助于熟悉这些语言的人轻松上手使用(当然,这是作者本人的观点)。(语言历史学家也会在其中发现 csh、Pascal 乃至 BASIC–PLUS 的一些痕迹。)表达式语法和 C 表达式语法非常相似。与大多数 Unix 实用程序不同,Perl 不会随意限制数据大小,只要内存足够,Perl 可以将整个文件视为单个字符串全部读入内存。递归深度不受限制。而散列(有时称作“关联数组”)使用的表会按需增长,以防止性能下降。Perl 可以使用复杂的模式匹配技术来快速扫描大量数据。尽管针对文本扫描进行了优化,但 Perl 也能处理二进制数据,而且能让 dbm 文件看起来像是散列。Setuid Perl 脚本可以通过数据流跟踪机制防止众多低级安全漏洞,因而比 C 程序更加安全。

如果遇到一个原本打算使用 sedawksh 解决的问题,但发现这超出了它们的能力或者程序必须更快地运行,而您又不愿意使用 C 来编写这些低级问题,那么 Perl 可能适合您的要求。此外,也有一些转换器可以将 sedawk 脚本转换为 Perl 脚本。

请稍等,还有更多...

早在 1993 年(请参见 perlhist),Perl 5 几乎彻底重写了一次,增加了下列优点:

  • 使用无数模块实现模块化和可重复使用能力。在 perlmod、perlmodlib 和 perlmodinstall 中介绍。

  • 可嵌入和可扩展。在 perlembedperlxstutperlxsperlcallperlgutsxsubpp 中介绍。

  • 由用户自主开发的魔术变量(包括多个同步 DBM 实现)。在 perltieAnyDBM_File 中介绍。

  • 现在,子例程可以被覆盖、自动装入和原型化。在 perlsub 中介绍。

  • 任意嵌套的数据结构和匿名函数。在 perlreftutperlrefperldscperllol 中介绍。

  • 面向对象编程。在 perlobjperlbootperltootperltoocperlbot 中介绍。

  • 支持轻量级进程(线程)。在 perlthrtutthreads 中介绍。

  • 支持 Unicode、国际化和本地化。在 perluniintroperllocaleLocale::Maketext 中介绍。

  • 词法作用域。在 perlsub 中介绍。

  • 正则表达式增强。在 perlre 中介绍,更多示例请参见 perlop

  • 增强了调试器和交互式 Perl 环境,并提供集成式编辑器支持。在 perldebtutperldebugperldebguts 中介绍。

  • 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

文件

"@INC"

Perl 库的位置

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
runtime/perl-584, runtime/perl-584/extra, runtime/perl-584/manual, SUNWpl5u, SUNWpl5v SUNWpl5p, SUNWpl5m
请参见下文。
接口稳定性
请参见下文。

Perl 适用于大多数操作系统,包括几乎所有类 Unix 平台。请参见 perlport 中介绍支持平台的部分了解支持的平台列表。

脚本接口、XSUB 接口和目录布局为 Committed(已确定)。二进制接口为 Uncommitted(未确定)。

另请参见

a2p

awkperl 转换器

s2p

sedperl 转换器

http://www.perl.com

Perl 主页

http://www.perl.com/CPAN

全面的 Perl 归档

http://www.perl.org

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(胡乱拼凑的大杂烩)的首字母缩写,但不要告诉任何人我这么说过。