内容

名称

perlglossary - Perl 词汇表

版本

版本 5.20210520

说明

Perl 文档中使用的术语(技术术语和其他术语)的词汇表,源自《Perl 编程》第四版的词汇表。本词汇表中其他地方定义了加粗的单词或短语。

其他有用的来源包括 Unicode 词汇表 http://unicode.org/glossary/、免费在线计算词典 http://foldoc.org/、术语文件 http://catb.org/~esr/jargon/ 和维基百科 http://www.wikipedia.org/

A

访问器方法

用于间接检查或更新对象状态(其实例变量)的方法

实际参数

在调用函数子例程时提供给它们的标量值。例如,当调用power("puff")时,字符串"puff"就是实际参数。另请参见参数形式参数

地址运算符

有些语言直接使用值的内存地址,但这就像玩火一样。Perl 提供了一组石棉手套来处理所有内存管理。Perl 中最接近地址运算符的是反斜杠运算符,但它会提供硬引用,这比内存地址安全得多。

算法

一个定义明确的步骤序列,解释得足够清楚,即使是计算机也能执行它们。

别名

事物的昵称,其行为与使用原始名称而不是昵称完全相同。临时别名在foreach循环的循环变量中隐式创建,在mapgrep运算符的$_变量中,在sort的比较函数中创建$a$b,以及在子例程调用的实际参数@_的每个元素中创建。永久别名在中通过导入符号或赋值给类型全局变量显式创建。包变量的词法作用域别名由our声明显式创建。

字母

我们放入单词中的字符类型。在 Unicode 中,这是所有字母,包括所有表意文字和某些变音符号、罗马数字等字母数字以及各种组合标记。

选项

一个可能的选项列表,您只能从中选择一个,例如,“您想要 A、B 还是 C 门?”正则表达式中的选项用单竖线分隔:|。普通 Perl 表达式中的选项用双竖线分隔:||。在布尔表达式中的逻辑选项用||or分隔。

匿名

用于描述无法通过命名变量直接访问的引用。此类引用必须至少通过一个硬引用间接访问。当最后一个硬引用消失时,匿名引用将被毫不留情地销毁。

应用程序

一种更大、更高级的程序,带有更高级的名称,这样人们就不会意识到他们正在使用程序。

架构

你正在使用的计算机类型,其中“计算机类型”表示所有共享兼容机器语言的计算机。由于 Perl 程序(通常)是简单的文本文件,而不是可执行映像,因此 Perl 程序对运行架构的敏感性远低于其他语言(如 C)中的程序,后者已编译为机器代码。另请参见平台操作系统

参数

提供给程序子例程函数方法的数据片段,告诉它应该做什么。也称为“参数”。

ARGV

包含来自命令行的参数向量的数组的名称。如果你使用空<>运算符,ARGV既是用于遍历参数的文件句柄的名称,也是包含当前输入文件名的标量的名称。

算术运算符

一个符号,例如+/,它告诉 Perl 执行你应该在小学中学到的算术运算。

数组

一个有序的序列,存储方式使你可以使用指定序列中值偏移量整数下标轻松访问任何值。

数组上下文

一个古语表达,更准确地说称为列表上下文

艺术许可证

Larry Wall 为 Perl 创建的开源许可证,最大限度地提高了 Perl 的实用性、可用性和可修改性。当前版本为 2。(http://www.opensource.org/licenses/artistic-license.php)。

ASCII

美国信息交换标准代码(一个仅足以糟糕地表示英语文本的 7 位字符集)。通常被广泛用于描述各种 ISO-8859-X 字符集的最低 128 个值,一堆相互不兼容的 8 位代码,最好描述为半 ASCII。另请参见Unicode

断言

正则表达式中的一个组成部分,它必须为真才能匹配模式,但它本身不一定匹配任何字符。通常专门用来表示零宽断言。

赋值

一个运算符,其在生命中分配的任务是更改变量的值。

赋值运算符

一个常规赋值或一个由普通赋值和一些其他运算符组成的复合运算符,它会改变变量的值;也就是说,相对于它的旧值。例如,$a += 22 添加到 $a

关联数组

请参阅哈希。谢谢。关联数组是 Perl 4 中哈希的旧术语。一些语言称之为字典。

结合性

当您有“A 运算符 B 运算符 C”且两个运算符具有相同的优先级时,确定您先执行左运算符还是先执行右运算符。像 + 这样的运算符是左结合的,而像 ** 这样的运算符是右结合的。有关运算符及其结合性的列表,请参阅 Camel 第 3 章“一元和二元运算符”。

异步

指由于太多事情同时发生而其相对时间顺序不确定的事件或活动。因此,异步事件是您不知道何时会发生的事件。

原子

一个正则表达式组件,可能匹配一个包含一个或多个字符的子字符串,并且被任何后续量词视为一个不可分割的语法单元。(与匹配零宽内容且可能无法量化的断言形成对比。)

原子操作

当德谟克利特给物质的不可分割的比特赋予“原子”一词时,他的本意是真正不可分割的东西:ἀ-(不)+ -τομος(可分割)。原子操作是不能中断的动作,而不是在无核区禁止的动作。

属性

一项新特性,允许使用修饰符声明变量子例程,如 sub foo : locked method。也是对象实例变量的另一个名称。

自动生成

对象操作符重载特性,通过该特性可以使用更基本的操作符合理地推断出某些操作符的行为。这假设重载的操作符通常与常规操作符具有相同的关系。请参阅 Camel 第 13 章“重载”。

自动增量

自动给某物加一,因此得名 ++ 操作符。自动给某物减一称为“自动减量”。

自动加载

按需加载。(也称为“惰性”加载。)具体来说,代表未定义的子例程调用 AUTOLOAD 子例程。

自动拆分

自动拆分字符串,就像 –a switch–p–n 下运行时为了模拟awk所做的那样。(另请参阅 AutoSplit 模块,它与 –a switch 无关,但与自动加载密切相关。)

自动生成

一个希腊罗马单词,意为“使自己活过来”。在 Perl 中,存储位置(左值)会根据需要自动生成,包括创建任何硬引用值以指向下一级存储。赋值 $a[5][5][5][5][5] = "quintet"可能会创建五个标量存储位置,加上四个引用(在前四个标量位置中),指向四个新的匿名数组(以保存最后四个标量位置)。但自动生成的关键在于您不必担心它。

AV

“数组值”的缩写,它指的是 Perl 的一种内部数据类型,用于保存数组AV 类型是SV的子类。

awk

描述性编辑术语——“笨拙”的缩写。还巧合地指一种古老的文本处理语言,Perl 从中派生了一些高级思想。

B

反向引用

正则表达式 中的不带装饰的圆括号内,由子模式捕获的子字符串。反斜杠十进制数(\1\2 等)在同一模式中稍后出现时,会引用当前匹配中对应的子模式。在模式之外,只要该模式是当前动态作用域的最后一次成功匹配,带数字的变量($1$2 等)将继续引用这些相同的值。

回溯

说“如果我必须重新做一遍,我会以不同的方式去做”,然后实际上回去以不同的方式重新做一遍。从数学上讲,它从可能性树上的不成功递归中返回。当 Perl 尝试使用正则表达式匹配模式,并且其早期尝试未成功时,就会回溯。请参阅骆驼书第 5 章“模式匹配”中的“/Couldn(n’t)”小引擎部分。

向后兼容性

这意味着您仍然可以运行旧程序,因为我们没有破坏它所依赖的任何功能或错误。

裸字

一个足够模棱两可的单词,在 use strict 'subs' 下被视为非法。在没有该限制的情况下,裸字将被视为周围有引号。

基类

一个通用的对象类型;也就是说,一个,其他更具体的类通过继承从遗传学上派生自它。也称为“超类”,由尊重其祖先的人使用。

大端

来自 Swift:一个先吃鸡蛋大头的人。也用于指那些将单词的最重要字节存储在比最低有效字节更低字节地址的计算机。通常被认为优于小端机器。另请参见小端

二进制

与以 2 为底表示的数字有关。这意味着基本上有两个数字:0 和 1。也用于描述“非文本”文件,大概是因为此类文件充分利用了其字节中的所有二进制位。随着Unicode的出现,这种区别本来就可疑,现在失去了更多意义。

二元运算符

一个运算符,它接受两个操作数

绑定

将特定的 网络地址 分配给 套接字

0 到 1(包括 0 和 1)之间的整数。最小的信息存储单位。八分之一 字节 或八分之一美元。(“Pieces of Eight”一词源于可以将旧西班牙美元分成 8 个位,每个位仍然可以作为货币。这就是为什么今天 25 美分的硬币仍然被称为“two bits”。)

位移

计算机字中向左或向右移动位,其效果是乘以或除以 2 的幂。

位串

一次被实际视为位序列的 序列。

祝福

在公司生活中,正式批准某事,例如,“工程副总裁已经批准了我们的 WebCruncher 项目”。同样,在 Perl 中,正式批准 引用,以便它可以作为 对象(例如 WebCruncher 对象)发挥作用。请参阅 Camel 第 27 章“函数”中的 bless 函数。

进程 在必须等待某事时所执行的操作:“我的进程被阻塞,等待磁盘。”作为不相关的名词,它指的是大块数据,其大小是 操作系统 喜欢处理的大小(通常是 2 的幂,例如 512 或 8192)。通常是指来自或进入磁盘文件的数据块。

BLOCK

一个语法结构,由用大括号分隔的 Perl 语句 序列组成。例如,ifwhile 语句是根据 BLOCK 定义的。有时我们也用“块”表示词法作用域;也就是说,一个像 BLOCK 一样作用的语句序列,例如在 eval 或文件中,即使这些语句没有用大括号分隔。

块缓冲

通过一次传递一个 来提高输入和输出效率的方法。默认情况下,Perl 对磁盘文件进行块缓冲。请参阅 缓冲区命令缓冲

布尔值

一个值为 truefalse 的值。

布尔值上下文

一种特殊的 标量上下文,用于条件判断中,以决定表达式返回的 标量值true 还是 false。不会评估为字符串或数字。请参阅 上下文

断点

程序中你告诉调试器停止 执行 的位置,以便你可以进行检查并查看是否有任何问题。

广播

同时向多个目的地发送 数据报

BSD

一种精神活性药物,在 80 年代很流行,可能是在加州大学伯克利分校或附近开发的。在很多方面与名为“System V”的处方药类似,但用途更多。(或至少更有趣。)其化学全称是“伯克利标准发行版”。

存储桶

哈希表 中的一个位置,其中包含(可能)多个其键根据哈希函数“哈希”为相同哈希值のエ项。(作为内部策略,除非你对内部或策略感兴趣,否则不必担心它。)

缓冲区

数据的临时存放位置。 块缓冲 的数据表示每当缓冲区已满时,数据就会传递到其目的地。 行缓冲 表示每当接收到完整行时,数据就会传递出去。 命令缓冲 表示每次执行 print 命令(或等效命令)时,数据都会传递出去。如果你的输出未经缓冲,系统会一次处理一个字节,而不使用暂存区域。这可能会相当低效。

内置

语言中预定义的 函数。即使被 覆盖 隐藏,你也可以始终通过使用 CORE:: 伪包 限定 其名称来获取内置函数。

bundle

CPAN 上的一组相关模块。(有时也指一组命令行开关,组合成一个 开关簇。)

byte

在大多数地方值八个 bit 的数据块。

bytecode

当机器人不想透露自己的方向(参见 endian)时,它们之间说的一种类似洋泾浜语的语言。以 20 世纪末编译器和解释器之间出于类似原因而说的一些类似语言命名。这些语言的特点是将所有内容表示为与非架构相关的字节序列。

C

C

一种因其内向的 类型 定义、深奥的 优先级 规则和函数调用机制的重 而受到许多人喜爱的语言。(好吧,事实上,人们最初转向 C 是因为他们发现小写标识符比大写标识符更容易阅读。)Perl 是用 C 编写的,因此 Perl 从中借用了一些想法也就不足为奇了。

cache

一个数据存储库。不要多次计算昂贵的答案,而是计算一次并保存结果。

callback

一个 处理程序,您向程序的其他部分注册该处理程序,希望程序的其他部分在发生某些感兴趣的事件时 触发 您的处理程序。

按引用调用

一种 参数 传递机制,其中 形式参数 直接引用 实际参数,并且 子例程 可以通过更改形式参数来更改实际参数。也就是说,形式参数是实际参数的 别名。另请参见 按值调用

按值调用

一种 参数 传递机制,其中 形式参数 引用 实际参数 的副本,并且 子例程 不能通过更改形式参数来更改实际参数。另请参见 按引用调用

canonical

简化为标准形式以方便比较。

捕获变量

在模式匹配中记住文本的变量,例如 $1$2,以及 %+%– 。请参阅 Camel 第 5 章,“模式匹配”。

捕获

正则表达式中,用括号括住子模式,将匹配的子字符串存储为反向引用。(捕获的字符串也会在列表上下文中以列表形式返回。)请参阅 Camel 第 5 章“模式匹配”。

迷信

复制粘贴代码而不理解其含义,同时迷信其价值。此术语起源于前工业文化,涉及技术先进文化探险家和殖民者的残骸。请参阅《上帝一定疯了》。

大小写

某些字符的属性。最初,排字工将大写字母存储在两个大写字母格的上格,将小写字母存储在下格。Unicode 识别三种大小写:小写字符属性 \p{lower})、标题大小写\p{title})和大写\p{upper})。第四种大小写映射称为折叠大小写,它本身不是一种独特的大小写,但它在内部用于实现大小写折叠。并非所有字母都有大小写,而某些非字母有大小写。

大小写折叠

不区分大小写地比较或匹配字符串。在 Perl 中,它通过 /i 模式修饰符、fc 函数和 \F 双引号转换转义符来实现。

大小写映射

将字符串转换为四种 Unicode 大小写映射之一的过程;在 Perl 中,它通过 fclcucfirstuc 函数来实现。

字符

字符串中最小的单个元素。计算机将字符存储为整数,但 Perl 允许您将它们作为文本进行操作。用于表示特定字符的整数称为该字符的码点

字符类

正则表达式中使用的方括号字符列表,表示集合中的任何字符都可能出现在给定位置。宽泛地说,任何如此使用的预定义字符集。

字符属性

可通过\p\P 元符号匹配的预定义字符类Unicode为每个可能的代码点定义了数百个标准属性,Perl 也定义了一些自己的属性。

环绕运算符

操作数环绕起来的运算符,例如角度运算符、括号或拥抱。

用户定义的类型,通过提供(直接或通过继承)方法(即子例程)来处理类的实例(其对象)的在 Perl 中实现。另请参见继承

类方法

方法,其调用者名称,而不是对象引用。与整个类关联的方法。另请参见实例方法

客户端

在网络中,进程,它启动与服务器进程的联系,以交换数据并可能接收服务。

闭包

匿名子例程,当在运行时生成对它的引用时,它会跟踪外部可见词法变量的身份,即使这些词法变量已经假定超出作用域。它们被称为“闭包”,因为这种行为给数学家一种闭合感。

用于将正则表达式的一部分分组为单个原子的括号子模式

CODE

当您将ref函数应用于对子例程的引用时返回的单词。另请参见CV

代码生成器

用低级语言为您编写代码的系统,例如实现编译器后端的代码。请参见程序生成器

代码点

计算机用于表示给定字符的整数。ASCII 代码点范围为 0 到 127;Unicode 代码点范围为 0 到 0x1F_FFFF;Perl 代码点范围为 0 到 2³²−1 或 0 到 2⁶⁴−1,具体取决于您的本机整数大小。在 Perl 文化中,有时称为 序数

代码子模式

其真实目的是执行一些 Perl 代码的 正则表达式 子模式,例如 (?{...})(??{...}) 子模式。

排序序列

用于对 字符 进行排序的顺序。这由 字符串 比较例程使用,例如,决定将“排序序列”放在本词汇表中的哪个位置。

共同维护者

PAUSE 中对 命名空间 进行索引的权限的人。任何人都可以上传任何命名空间,但只有主要维护者和共同维护者才能对他们的贡献进行索引。

组合字符

任何通用类别为组合标记 (\p{GC=M}) 的字符,可以是空格或非空格。有些甚至不可见。跟在音素基础字符后面的组合字符序列共同组成一个称为 音素 的单个用户可见字符。大多数但并非所有变音符号都是组合字符,反之亦然。

命令

shell 编程中,程序名称及其参数的语法组合。更宽泛地说,您键入到 shell(命令解释器)中的任何内容都会启动它执行某些操作。更宽泛地说,Perl 语句,可能以 标签 开头,通常以分号结尾。

命令缓冲

Perl 中的一种机制,它允许您存储每个 Perl 命令 的输出,然后将其作为对 操作系统 的单个请求刷新。通过将 $| ($AUTOFLUSH) 变量设置为真值来启用它。当您不希望数据四处乱窜,没有到达它应该去的地方时,它会被使用,这可能是因为 文件管道 上的默认设置是使用 块缓冲

命令行参数

当您告诉 shell 执行 命令 时,您随程序名称一起提供的 。这些值通过 @ARGV 传递给 Perl 程序。

命令名称

当前正在执行的程序的名称,如在命令行中键入的那样。在 C 中,命令 名称作为第一个命令行参数传递给程序。在 Perl 中,它作为 $0 单独输入。

注释

不会影响程序含义的备注。在 Perl 中,注释以 # 字符开头,并持续到行尾。

编译单元

当前正在 编译文件(或在 eval 的情况下为 字符串)。

编译

将源代码转换为机器可用的形式的过程。请参阅 编译阶段

编译阶段

在 Perl 开始运行主程序之前的任何时间。另请参阅 运行阶段。编译阶段主要用于 编译时间,但也可能在评估 BEGIN 块、useno 声明或常量子表达式时用于 运行时。任何 use 声明的启动和导入代码也在编译阶段运行。

编译器

严格来说,编译器是一个处理另一个程序并输出包含以“更可执行”形式编写的程序的另一个文件的程序,通常包含本机机器指令。根据此定义,perl 程序不是编译器,但它确实包含一种编译器,该编译器获取程序并将其转换为 perl 进程本身中更可执行的形式(语法树),然后 解释器 对其进行解释。但是,有一些扩展 模块 可以让 Perl 更像“真正的”编译器。请参阅 Camel 第 16 章“编译”。

编译时间

Perl 尝试理解代码的时间,而不是它认为知道代码的含义并仅仅尝试执行它认为代码所说的内容的时间,即 运行时

作曲者

不是真正 对象引用 的“构造函数”,例如匿名数组或哈希(或奏鸣曲)。例如,一对大括号充当哈希的作曲者,一对方括号充当数组的作曲者。请参阅 Camel 第 8 章“引用”中的“创建引用”部分。

连接

将一只猫的鼻子粘到另一只猫的尾巴上的过程。对两个 字符串 也可以进行类似的操作。

条件

“不确定的”东西。请参阅 布尔上下文

连接

在电话通信中,呼叫者和被呼叫者电话之间的临时电气电路。在网络中,客户端服务器之间的同类临时电路。

构造

作为名词,由较小部分构成的语法片段。作为及物动词,使用构造函数创建对象

构造函数

任何类方法实例子例程,用于组合、初始化、祝福并返回对象。有时我们宽泛地使用该术语,表示组合器

上下文

周围环境。周围代码给出的上下文决定了特定表达式预期返回的数据类型。三个主要上下文是列表上下文标量空上下文。标量上下文有时细分为布尔上下文数字上下文字符串上下文空上下文。还有一个“不关心”上下文(如果你关心的话,它在 Camel 第 2 章“Bits and Pieces”中进行了处理)。

延续

将多个物理视为单一逻辑行。通过在换行符前放置反斜杠来继续Makefile行。由 RFC 822 定义的邮件头在换行符放置空格或制表符来继续。通常,Perl 中的行不需要任何形式的延续标记,因为空格(包括换行符)会被愉快地忽略。通常如此。

核心转储

进程的尸体,以文件形式留在进程的工作目录中,通常是由于某些类型的致命错误。

CPAN

综合 Perl 归档网络。(有关详细信息,请参阅 Camel 序言和 Camel 第 19 章“CPAN”。)

C 预处理器

典型的 C 编译器的第一遍,它处理以 # 开头的行以进行条件编译和宏定义,并根据当前定义对程序文本进行各种操作。也称为 cpp(1)。

黑客

破坏计算机系统安全的人。黑客可能是真正的黑客,也可能只是脚本小子

当前选择的输出通道

使用 select(FILEHANDLE) 指定的最后一个 文件句柄;如果没有选择文件句柄,则为 STDOUT

当前包

当前语句 编译 所在的 。从当前 词法作用域 或任何封闭词法作用域中的程序文本中向后扫描,直到找到包声明。这就是当前包名称。

当前工作目录

参见 工作目录

CV

在学术界,简历,一种花哨的履历。在 Perl 中,一个内部“代码值”typedef,持有 子例程CV 类型是 SV 的子类。

D

悬空语句

一个光秃秃的单个 语句,没有任何大括号,悬挂在 ifwhile 条件上。C 允许它们。Perl 不允许。

数据报

数据包,例如 UDP 消息,(从所涉及程序的角度来看)可以独立地通过网络发送。(事实上,所有数据包都在 IP 级别独立发送,但 协议(如 TCP)会向程序隐藏这一点。)

数据结构

各种数据如何相互关联,以及将它们全部放在一起时形成什么形状,例如矩形表或三角形树。

数据类型

一组可能的值,以及知道如何处理这些值的所有操作。例如,数字数据类型具有一组特定的数字,你可以使用这些数字,以及可以在数字上执行的各种数学运算,但对字符串(如 "Kilroy")来说几乎没有意义。字符串有自己的操作,例如 连接。由多个较小部分组成的复合类型通常具有用于组合和分解它们的操作,也许还有用于重新排列它们的操作。对现实世界中的事物建模的 对象 通常具有与实际活动相对应的操作。例如,如果你对电梯进行建模,你的电梯对象可能有一个 open_door 方法

DBM

代表“数据库管理”例程,一组使用磁盘文件模拟关联数组的例程。这些例程使用动态哈希方案,仅通过两次磁盘访问即可找到任何条目。DBM 文件允许 Perl 程序在多次调用中保持一个持久的哈希。您可以将哈希变量tie到各种 DBM 实现。

声明

一个断言,它声明某物存在,并且可能描述它是什么样子,而无需承诺如何或在哪里使用它。声明就像食谱中说“两杯面粉、一个大鸡蛋、四到五个蝌蚪……”的部分。请参阅语句了解其相反含义。请注意,一些声明也充当语句。如果提供了正文,子例程声明也充当定义。

声明符

告诉程序您想要哪种变量的东西。Perl 不要求您声明变量,但您可以使用myourstate表示您想要除默认值之外的东西。

递减

从变量中减去一个值,如“递减$x”(表示从其值中减去 1)或“递减$x 3”。

默认

如果您不提供自己的值,则为您选择的

已定义

有意义。Perl 认为人们试图做的一些事情毫无意义;特别是,使用从未赋予的变量,以及对不存在的数据执行某些操作。例如,如果您尝试读取文件末尾之后的数据,Perl 将向您返回一个未定义的值。另请参阅false和 Camel 第 27 章“函数”中的defined条目。

分隔符

一个 字符字符串,用于设置任意大小文本对象的边界,不要与 分隔符终止符 混淆。“分隔”实际上只意味着“包围”或“封闭”(就像这些括号所做的那样)。

解除引用

一个花哨的计算机科学术语,意思是“遵循 引用 指向的内容”。“de”部分指的是你正在消除一层 间接性

派生类

一个 ,它定义其一些 方法,以一个更通用的类(称为 基类)来表示。请注意,类不会被专门分类为基类或派生类:一个类可以同时作为派生类和基类,这有点时髦。

描述符

参见 文件描述符

销毁

释放 引用项 的内存(如果它有一个,则首先触发其 DESTROY 方法)。

析构函数

一个特殊的 方法,当一个 对象 考虑 销毁 自身时调用。Perl 程序的 DESTROY 方法不会执行实际的销毁;Perl 只是 触发 该方法,以防 想执行任何关联的清理。

设备

连接到计算机的一个奇特的硬件小工具(如磁盘或磁带驱动器或调制解调器或操纵杆或鼠标),操作系统 试图让它看起来像一个 文件(或一堆文件)。在 Unix 中,这些假文件往往存在于 /dev 目录中。

指令

一个 pod 指令。参见 Camel 第 23 章,“普通旧文档”。

目录

一个包含其他文件的文件。一些 操作系统 将它们称为“文件夹”、“抽屉”、“目录”或“目录”。

目录句柄

一个名称,表示打开目录以读取它的特定实例,直到你关闭它。参见 opendir 函数。

学科

有些人需要它,而有些人则避免它。对于 Perl 来说,它是一种古老的说法,表示 I/O 层

分派

将某些内容发送到其正确目的地。通常比喻性地用来表示将编程控制权转移到算法选择的目的地,通常通过在函数 引用 表中查找,或者在对象 方法 的情况下,通过遍历继承树来查找该方法最具体的定义。

发行版

软件系统的标准捆绑发行版。默认用法暗示包含源代码。如果不是这种情况,则称之为“仅二进制”发行版。

双重存在

一些模块同时存在于 标准库CPAN 中。这些模块可能会在两个轨道上开发,因为人们会修改任一版本。目前的趋势是理清这些情况。

幻术

一种迷幻、幻觉、幻象或杂耍。当 Perl 的神奇 魔术 效果没有达到你的预期时,而是看起来像是神秘的幻术、巫术或奇迹时,就会这么说。[来自中古英语。]

魔术

DWIM 是“Do What I Mean”的首字母缩写,其原则是某事物应该在你没有过度繁琐的情况下执行你想要它执行的操作。执行“魔术”的一段代码是一个“魔术”。魔术可能需要大量的幕后操作,如果(如果没有正确地留在幕后),则被称为 幻术

动态作用域

动态作用域在动态作用域中起作用,使变量在首次使用它们的的其余部分和块的其余部分调用的任何子例程中可见。动态作用域变量的值可以通过local运算符暂时更改(并稍后隐式恢复)。(比较词法作用域。)更宽泛地用来表示在运行时正在调用另一个子例程的子例程如何“包含”该子例程。

E

折衷的

源自多种来源。有些人会说太多了。

元素

基本构建块。当您谈论数组时,它构成数组的项目之一。

嵌入

当某物包含在其他事物中时,尤其是在这可能会令人惊讶时:“我在编辑器中嵌入了一个完整的 Perl 解释器!”

空子类测试

一个概念,即一个空的派生类应完全像它的基类一样。

封装

接口实现分开的抽象面纱(无论是否强制执行),它规定对对象状态的所有访问都必须仅通过方法

字节序

参见小端字节序大端字节序

顺路吃子

当您在复制时更改它。[源自法语“顺路”,就像国际象棋中异域的吃兵步法一样。]

环境

您的进程从其父进程继承的环境变量的集合。通过%ENV访问。

环境变量

一种机制,通过该机制,某些高级代理(如用户)可以将其偏好传递给其后代(子进程、孙进程、曾孙进程,依此类推)。每个环境变量都是一个/对,类似于散列中的一个条目。

EOF

文件结束。有时比喻性地用作here 文档的终止字符串。

errno

系统调用在失败时返回的错误号。Perl 通过名称$!(或在使用 English 模块时通过$OS_ERROR)引用该错误。

error

参见异常致命错误

转义序列

参见元符号

exception

错误的一个花哨术语。参见致命错误

异常处理

程序对错误的响应方式。Perl 中的异常处理机制是eval运算符。

exec

丢弃当前进程的程序,并用另一个程序替换它,而无需退出进程或放弃所持有的任何资源(旧内存映像除外)。

可执行文件

一个文件,它被特别标记以告诉操作系统,可以将此文件作为程序运行。通常缩写为“可执行文件”。

execute

运行程序子例程。(与kill内置函数无关,除非您尝试运行信号处理程序。)

执行位

告诉操作系统它可以运行此程序的特殊标记。实际上,Unix 下有三个执行位,使用哪个位取决于您是否单独、集体或根本不拥有该文件。

退出状态

参见状态

exploit

在此处用作名词,它指一种已知的方法,可破坏程序使其执行作者无意执行的操作。您的任务是编写不可利用的程序。

导出

使 模块 中的符号可供其他模块 导入

表达式

在需要 的位置可以合法表述的任何内容。通常由 字面量变量运算符函数子例程 调用组成,不一定按照此顺序。

扩展

同时引入 编译 的 C 或 C++ 代码的 Perl 模块。更一般地说,任何可以 编译 到 Perl 中的实验选项,例如多线程。

F

在 Perl 中,如果在字符串上下文中求值,任何看起来像 """0" 的值。由于未定义的值求值为 "",因此所有未定义的值都是假的,但并非所有假值都是未定义的。

常见问题解答

常见问题解答(尽管不一定经常解答,尤其是如果答案出现在随 Perl 一起提供的 Perl 常见问题解答中)。

致命错误

未捕获的 异常,导致在 标准错误 流上打印一条消息后终止 进程。发生在 eval 内部错误不是致命的。相反,eval 在将异常消息放入 $@ ($EVAL_ERROR) 变量后终止。您可以尝试使用 die 运算符(称为抛出或引发异常)引发致命错误,但这可能会被动态封闭的 eval 捕获。如果没有被捕获,die 就会变成致命错误。

feeping creaturism

“creeping featurism” 的倒装词,指在程序中添加一个新功能的生物学冲动。

字段

一个数字或字符串数据片段,是较长的 字符串记录 的一部分。可变宽字段通常由 分隔符 分隔(因此使用 split 提取字段),而固定宽字段通常位于固定位置(因此使用 unpack)。实例变量 也称为“字段”。

FIFO

先进先出。另请参见 LIFO。也是 命名管道 的别名。

文件

一个命名的集合数据,通常存储在 文件系统目录 中的磁盘上。如果你喜欢办公隐喻,它大致就像一个文档。在现代文件系统中,你实际上可以给一个文件起多个名称。一些文件具有特殊属性,如目录和设备。

文件描述符

操作系统 用来跟踪你正在讨论的已打开 文件 的小数字。Perl 将文件描述符隐藏在 标准 I/O 流中,然后将流附加到 文件句柄

文件通配符

文件名 进行“通配符”匹配。参见 glob 函数。

文件句柄

一个标识符(不一定与文件的真实名称相关),表示打开文件的特定实例,直到你关闭它。如果你要连续打开和关闭几个不同的文件,用同一个文件句柄打开每个文件是可以的,这样你就不必编写单独的代码来处理每个文件。

文件名

一个文件的名称。此名称列在 目录 中。你可以在 open 中使用它来准确告知 操作系统 你要打开哪个文件,并将文件与 文件句柄 关联起来,该句柄将在你的程序中携带该文件的后续标识,直到你关闭它。

文件系统

驻留在磁盘分区上的 目录文件 的集合。有时称为“分区”。你可以在文件系统中更改文件名,甚至在目录之间移动文件,而无需实际移动文件本身,至少在 Unix 中是这样。

文件测试运算符

一个内置的一元运算符,用于确定某事是否与文件 true 相关,例如 –o $filename 用于测试你是否是该文件的拥有者。

过滤器

一个程序,旨在获取 的输入并将其转换为输出流。

先到先得

第一个上传命名空间PAUSE作者自动成为该命名空间的主要维护者。“先到先得”的权限将从自动获得该角色的主要维护者和被分配该角色的主要维护者中进行区分。

flag

我们倾向于避免这个术语,因为它包含很多意思。它可能表示不带参数的命令行开关(例如 Perl 的–n–p标志),或者不太频繁地表示单比特指示器(例如sysopen中使用的O_CREATO_EXCL标志)。有时非正式地用来指某些正则表达式修饰符。

浮点数

以“科学记数法”存储数字的方法,使得数字的精度与其大小无关(小数点“浮动”)。当 Perl 无法使用整数时,它会使用浮点数(有时称为“浮点数”)进行数字运算。浮点数只是实数的近似值。

刷新

清空缓冲区的操作,通常在缓冲区已满之前进行。

FMTEYEWTK

比你想要了解的更多。关于一个狭窄主题的详尽论文,有点像超级FAQ。有关更多信息,请参阅 Tom。

foldcase

在不考虑大小写的情况下进行比较或匹配时 Unicode 中使用的字符映射。由于 Unicode 复杂的一对多字符映射,比较小写、标题或大写都是不可靠的。Foldcase 是小写变体(对某些代码点使用部分分解的规范化形式),专门创建用于解决此问题。

fork

创建一个子进程,该子进程与其父进程在创建时刻完全相同,至少在其产生自己的想法之前。具有受保护内存的线程。

形式参数

子例程了解其参数的通用名称。在许多语言中,形式参数总是被赋予单独的名称;在 Perl 中,形式参数只是数组的元素。Perl 程序的形式参数是$ARGV[0]$ARGV[1]等。类似地,Perl 子例程的形式参数是$_[0]$_[1]等。您可以通过将值分配给my列表来为参数指定单独的名称。另请参见实际参数

格式

一份关于放置多少空格和数字以及其他内容的规范,以便您打印的任何内容都能美观大方。

免费提供

意味着您无需花钱即可获得它,但其版权仍可能属于其他人(例如 Larry)。

可自由再分发

意味着如果您将盗版副本提供给您的朋友,并且我们发现了,您不会陷入法律纠纷。事实上,我们希望您将副本提供给您的所有朋友。

免费软件

从历史上看,任何您赠送的软件,特别是如果您也提供了源代码。现在通常称为开源软件。最近出现了一种趋势,将该术语与开源软件相对立,仅指根据自由软件基金会的 GPL(通用公共许可证)发布的免费软件,但这在词源学上很难证明。

函数

在数学上,将一组输入值中的每一个映射到一个特定输出值的映射。在计算机中,是指返回子例程运算符。它可能具有或不具有输入值(称为参数)。

滑稽角色

像 Larry 这样的人,或者他古怪的朋友之一。还指 Perl 要求其变量作为名词标记的奇怪前缀。

G

垃圾回收

一个名称不当的功能——它应该被称为“期望你的母亲在你身后收拾”。严格来说,Perl 不会这样做,但它依赖于引用计数机制来保持整洁。然而,我们很少严格地说话,并且经常将引用计数方案称为一种垃圾回收形式。(如果这能让你感到安慰,当你的解释器退出时,一个“真正的”垃圾收集器会运行以确保一切都被清理干净,如果你在循环引用等方面很混乱的话。)

GID

组 ID——在 Unix 中,操作系统用于识别您和您的成员的数字组 ID。

glob

严格来说,shell 的*字符,当您尝试生成文件名列表时,它将匹配一“glob”字符。宽松地说,使用 glob 和类似符号进行模式匹配的行为。另请参见fileglobtypeglob

全局

您可以在任何位置看到的内容,通常用于在您的程序中随处可见的变量子例程。在 Perl 中,只有某些特殊变量才是真正全局的——大多数变量(和所有子例程)仅存在于当前中。可以使用 our 声明全局变量。请参见 Camel 第 4 章“语句和声明”中的“全局声明”。

全局销毁

当 Perl 解释器关闭时发生的全局变量(以及任何关联的对象析构函数的运行)的垃圾回收。全局销毁不应与启示录混淆,除非在应该混淆的时候。

胶水语言

一种像 Perl 这样的语言,它擅长将原本不打算连接在一起的东西连接在一起。

粒度

您在处理的内容的大小,从心理上来说。

音素

石墨烯是排列成一个原子厚度的六角晶格的碳同素异形体。音素或更确切地说,音素簇字符串是单个用户可见的字符,它本身可以是几个字符(代码点)长。例如,回车加换行符是一个音素,但有两个字符,而“ȫ”是一个音素,但有一个、两个甚至三个字符,具体取决于规范化

贪婪的

量词希望匹配尽可能多内容的子模式

grep

最初来自旧 Unix 编辑器命令“全局搜索正则表达式并打印它”,现在通常用于任何类型的搜索,尤其是文本搜索。Perl 有一个内置的 grep 函数,用于搜索与任何给定条件匹配的元素的列表,而 grep(1) 程序在文件中的一个或多个文件中搜索与正则表达式匹配的行。

您是其中成员的一组用户。在某些操作系统(如 Unix)中,您可以向您所在组的其他成员授予某些文件访问权限。

GV

一个内部“全局值”类型定义,持有 typeglobGV 类型是 SV 的子类。

H

黑客

在解决技术问题上非常执着的人,无论这些问题涉及高尔夫、对抗兽人还是编程。从道德上讲,黑客是一个中性术语。不要把优秀的黑客与邪恶的 入侵者 或无知的 脚本小子 混为一谈。如果你把他们混为一谈,我们就会认为你邪恶或无知。

处理程序

当你的程序需要响应某些内部事件(如 信号或遇到受 操作符重载 约束的操作符)时,Perl 调用的 子例程方法。另请参见 回调

硬引用

包含 引用对象 实际地址的 标量 ,以便引用对象的 引用 计数对其进行计数。(某些硬引用在内部持有,例如 typeglob 的变量槽之一到其对应引用对象的隐式引用。)硬引用不同于 符号引用

哈希

一个无序的 / 对关联,存储方式让你可以轻松地使用字符串 来查找其关联的数据 。此词汇表就像一个哈希,其中要定义的单词是键,而定义是值。哈希有时也被称为“关联数组”,这是一个很好的理由,可以简单地称其为“哈希”。

哈希表

Perl 在内部使用的数据结构,用于高效实现关联数组(哈希)。另请参见 存储桶

头文件

包含某些必需定义的文件,你必须在程序的其余部分“之前”包含这些定义才能执行某些晦涩的操作。C 头文件具有 .h 扩展名。Perl 实际上没有头文件,尽管历史上 Perl 有时使用带有 .ph 扩展名的已翻译 .h 文件。请参阅骆驼书第 27 章“函数”中的 require。(头文件已被 模块 机制取代。)

here 文档

之所以这样称呼,是因为shell中有一个类似的结构,它假装linecommand之后是一个要馈送给命令的单独file,直到某个终止字符串。然而,在 Perl 中,它只是一种花哨的引用形式。

十六进制

16 进制数,简称“hex”。10 到 15 的数字通常用字母 af 表示。Perl 中的十六进制常量以 0x 开头。另请参阅 Camel 第 27 章“函数”中的 hex 函数。

主目录

登录时进入的目录。在 Unix 系统上,名称通常由 login 放入 $ENV{HOME}$ENV{LOGDIR} 中,但你也可以使用 (getpwuid($<))[7] 找到它。(某些平台没有主目录的概念。)

主机

程序或其他数据驻留的计算机。

傲慢

过度的自豪,宙斯会因此惩罚你。也是让你编写(并维护)程序的品质,其他人不会想说坏话。因此,这是程序员的第三大美德。另请参阅懒惰急躁

HV

“哈希值”typedef 的简称,它保存 Perl 中哈希的内部表示形式。HV 类型是SV的子类。

I

标识符

计算机程序可能感兴趣的大多数内容的合法名称。许多语言(包括 Perl)允许标识符以字母字符开头,然后包含字母和数字。Perl 还允许在允许字母字符的任何地方使用连接器标点符号,如下划线字符。(Perl 还有更复杂的名称,如限定名称。)

急躁

当计算机反应迟钝时,你会感到愤怒。这会让你编写出不仅能对你的需求做出反应,而且能实际预测你的需求的程序。或者至少假装能预测。因此,这是程序员的第二个伟大优点。另请参见懒惰傲慢

实现

代码片段实际执行其任务的方式。代码用户不应指望实现细节保持不变,除非它们是已发布的接口的一部分。

导入

访问从另一个模块导出的符号。请参见 Camel 第 27 章“函数”中的use

增量

将某物的数值增加 1(如果指定,则增加其他数字)。

索引

在过去,索引是指在实际索引(例如电话簿)中查找的行为。但现在,它仅仅是指使用任何类型的键或位置来查找相应的的行为,即使不涉及索引。事情已经退化到 Perl 的index函数仅仅定位一个字符串在另一个字符串中的位置(索引)的程度。

间接文件句柄

求值为可作为文件句柄使用的表达式字符串(文件句柄名称)、类型全局变量、类型全局变量引用或低级IO对象。

间接

如果程序中的某个内容不是你要查找的值,但指示了该值所在的位置,那就是间接。这可以通过符号引用硬引用来完成。

间接对象

在英语语法中,动词与其直接对象之间的短名词短语,表示动作的受益者或接受者。在 Perl 中,print STDOUT "$foo\n";可以理解为“动词间接对象对象”,其中STDOUTprint动作的接受者,"$foo"是要打印的对象。类似地,在调用方法时,你可能会将调用者放在方法与其参数之间的与格槽中

$gollum = new Pathetic::Creature "Sméagol";
give $gollum "Fisssssh!";
give $gollum "Precious!";
间接对象槽

使用间接对象调用语法时,方法调用与其参数之间的语法位置。(该槽的特点是它与下一个参数之间没有逗号。)STDERR在此处位于间接对象槽中

print STDERR "Awake! Awake! Fear, Fire, Foes! Awake!\n";
中缀

出现在其操作数之间的运算符,例如24 * 7中的乘法。

继承

从祖先那里获得的遗传或其他东西。如果你碰巧是一个 ,你的祖先被称为 基类,你的后代被称为 派生类。请参阅 单继承多继承

实例

“类的实例”的简称,表示该 的一个 对象

实例数据

请参阅 实例变量

实例方法

对象方法,与 类方法 相对。

方法调用者 是一个 对象,而不是一个 名称。一个类的每个对象都共享该类的所有方法,因此实例方法适用于该类的所有实例,而不是适用于特定实例。另请参阅 类方法

实例变量

对象属性;存储在特定对象中的数据,而不是存储在整个类中。

整数

没有小数(十进制)部分的数字。计数数字,如 1、2、3 等,但包括 0 和负数。

接口

一段代码承诺永远提供的服务,与它的 实现 相比,它可以随时更改实现,而无需顾虑。

插值

在另一个值的中间插入标量或列表值,使其看起来一直存在于那里。在 Perl 中,变量插值发生在双引号字符串和模式中,而列表插值发生在构造要传递给列表运算符或其他此类结构的值列表时,该结构采用 LIST

解释器

严格来说,它是一个读取第二个程序并直接执行第二个程序所说的内容的程序,而无需首先将程序转换为不同的形式,这是 编译器 所做的。根据这个定义,Perl 不是一个解释器,因为它包含一种编译器,该编译器将程序转换为更可执行的形式(语法树),在 perl 进程本身中,Perl 运行时 系统会对其进行解释。

调用者

调用 方法 的代理。在 方法中,调用者是包名称。在 实例 方法中,调用者是对象引用。

调用

调用神、守护程序、程序、方法、子例程或函数以使其执行您认为它应该执行的操作。我们通常“调用”子例程,但“调用”方法,因为这听起来更酷。

I/O

文件设备 输入或输出。

IO

内部 I/O 对象。还可以表示 间接对象

I/O 层

数据与您获得的输入或最终获得的输出之间的过滤器之一。

IPA

印度淡色艾尔。也是国际音标,是全球用于音标的标准字母表。大量借鉴 Unicode,包括许多组合字符。

IP

互联网协议或知识产权。

IPC

进程间通信。

is-a

两个 对象 之间的关系,其中一个对象被认为是另一个通用对象的更具体版本:“骆驼是一种哺乳动物”。由于通用对象实际上只以柏拉图式的意义存在,因此我们通常会为对象的概念添加一些抽象,并将关系视为通用 基类 和特定 派生类 之间的关系。奇怪的是,柏拉图式类并不总是有柏拉图式关系——参见 继承

迭代

重复执行某些操作。

迭代器

一个特殊的编程小工具,用于跟踪您在尝试迭代的内容中的位置。Perl 中的 foreach 循环包含一个迭代器;哈希也是如此,它允许您遍历它。

IV

整数四,不要与六混淆,这是 Tom 最喜欢的编辑器。IV 还表示 标量 可以保存的类型的内部整数值,不要与 NV 混淆。

J

JAPH

“Just Another Perl Hacker”,一段聪明但晦涩的 Perl 代码,在执行时会评估为该字符串。通常用于说明特定的 Perl 特性,并且是 USENET 签名中持续进行的混淆 Perl 竞赛。

K

哈希 的字符串索引,用于查找与该键关联的

关键字

参见 保留字

L

标签

您给 语句 起的一个名称,以便您可以在程序中的其他地方讨论该语句。

懒惰

让你付出巨大努力来减少整体能量消耗的品质。它让你编写省力的程序,其他人会发现这些程序很有用,然后记录你写的内容,这样你就不必回答那么多关于它的问题。因此,程序员的第一个伟大美德。因此,这本书。另请参见 急躁傲慢

最左最长

正则表达式 引擎偏好匹配 模式 的最左端出现,然后给定一个匹配将发生的的位置,偏好最长的匹配(假设使用 贪婪 量词)。有关此主题的更多内容,请参阅 Camel 第 5 章“模式匹配”。

左移

将数字乘以 2 的某个幂的 位移

词素

标记 的花哨术语。

词法分析器

标记器 的花哨术语。

词法分析

标记化的专业术语。

词法作用域

通过显微镜观察你的牛津英语词典。(也称为静态作用域,因为词典不会很快改变。)类似地,观察存储在每个作用域的私有词典(命名空间)中的变量,这些变量仅从其声明点到声明它们的词法作用域结束才可见。——同义词。静态作用域。——反义词。动态作用域

词法变量

词法作用域约束的变量,由my声明。通常只称为“词法”。(our声明为全局变量声明了一个词法作用域名称,它本身不是一个词法变量。)

通常是过程的集合。在古代,指的是.pl文件中的子例程集合。在现代,更常指的是系统上所有 Perl 模块的集合。

LIFO

后进先出。另请参见FIFO。LIFO通常称为堆栈

在 Unix 中,以换行字符结尾的零个或多个非换行字符序列。在非 Unix 机器上,即使底层操作系统有不同的想法,C 库也会模拟此行为。

换行符

由回车后跟换行符或具有 Unicode 垂直空间字符属性的任何字符组成的音素

行缓冲

标准 I/O输出流使用,该输出流在每次换行后刷新其缓冲区。许多标准 I/O 库会自动对输出到终端的行缓冲进行设置。

行号

在此之前读取的行数加 1。Perl 为其打开的每个源文件或输入文件保留一个单独的行号。当前源文件行号由__LINE__表示。当前输入行号(对于最近通过<FH>读取的文件)由$.$INPUT_LINE_NUMBER)变量表示。许多错误消息会报告这两个值(如果可用)。

用作名词时,目录 中表示文件的名称。给定文件可以有多个链接指向它。这就像在电话簿中将相同的电话号码在不同的名称下列出。用作动词时,将部分编译的文件的未解析符号解析为(几乎)可执行映像。链接通常可以是静态的或动态的,这与静态或动态作用域无关。

LIST

表示以逗号分隔的表达式列表的语法结构,求值后生成列表值LIST 中的每个表达式都在列表上下文中求值,并内插到列表值中。

列表

标量值的有序集。

列表上下文

表达式被其周围环境(调用它的代码)期望返回一个值列表而不是单个值的情况。想要LIST 参数的函数告诉这些参数它们应该生成一个列表值。另请参阅上下文

列表运算符

运算符,它对值列表执行某些操作,例如 joingrep。通常用于不需要在其参数列表周围加上括号的命名内置运算符(例如 printunlinksystem)。

列表值

临时标量值的未命名列表,可以在程序中从任何列表生成函数传递到任何提供列表上下文的函数或结构。

字面量

编程语言中的标记,例如数字或字符串,它给您一个实际的,而不是像变量那样仅仅表示可能的值。

小端

Swift:先吃鸡蛋小端的人。也用于指将单词的最低有效字节存储在比最高有效字节更低字节地址的计算机。通常认为优于大端机器。另请参阅大端

局部

并非在所有地方都表示相同含义。Perl 中的全局变量可以通过local运算符在动态作用域中进行本地化。

逻辑运算符

表示“与”、“或”、“异或”和“非”概念的符号。

前瞻

一种断言,用于窥视当前匹配位置右侧的字符串。

后顾

一种断言,用于窥视当前匹配位置左侧的字符串。

循环

一种结构,可重复执行某些操作,如过山车。

循环控制语句

循环体内的任何语句,可使循环过早停止循环或跳过迭代。通常,您不应在过山车上尝试此操作。

循环标签

一种附加到循环(或过山车)的键或名称,以便循环控制语句可以讨论要控制哪个循环。

小写

在 Unicode 中,不仅包括通用类别为小写字母的字符,还包括具有小写属性的任何字符,包括修饰字母、字母数字、一些其他符号和一个组合标记。

左值

能够充当左值

左值

语言律师用来表示可以为其分配新的存储位置的术语,例如变量数组的元素。“l”是“left”的缩写,表示赋值的左侧,这是 lvalue 的典型位置。lvaluable函数或表达式是可以赋值的,例如 pos($x) = 10

lvalue 修饰符

一个形容词伪函数,以某种声明方式扭曲lvalue的含义。目前有三个 lvalue 修饰符:myourlocal

M

magic

从技术上讲,附加到变量上的任何额外语义,例如 $!$0%ENV%SIG,或附加到任何绑定变量上。当您修改这些变量时,就会发生神奇的事情。

神奇增量

一个增量运算符,它知道如何增加 ASCII 字母和数字。

神奇变量

当您访问或分配它们时具有副作用的特殊变量。例如,在 Perl 中,更改%ENV数组的元素也会更改子进程将使用的相应环境变量。读取$!变量会给您当前的系统错误号或消息。

Makefile

控制程序编译的文件。Perl 程序通常不需要Makefile,因为 Perl 编译器有足够的自控能力。

man

Unix 程序,它为您显示在线文档(手册页)。

手册页

手册中的“页面”,通常通过man(1)命令访问。手册页包含 SYNOPSIS、DESCRIPTION、BUGS 列表等,并且通常比一页长。有记录命令系统调用函数设备协议文件等的手册页。在这本书中,我们称任何标准 Perl 文档(如perlopperldelta)为手册页,无论它在您的系统上安装的是什么格式。

匹配

参见模式匹配

成员数据

请参阅 实例变量

内存

这始终表示您的主内存,而不是您的磁盘。混淆问题的是,您的机器可能会实现虚拟内存;也就是说,它会假装它拥有的内存比实际拥有的多,并且它会使用磁盘空间来保存非活动位。这可能会让您感觉自己拥有的内存比实际拥有的多一点,但这并不能替代真正的内存。关于虚拟内存最好的说法是,它可以让您的性能在您用完真实内存时逐渐下降,而不是突然下降。但是,当您用完虚拟内存时,您的程序也会死掉——如果您还没有先把磁盘搞死的话。

元字符

应按常规方式处理的 字符。哪些字符应作为元字符进行特殊处理在不同的上下文中差异很大。你的 shell 会有特定的元字符,双引号引用的 Perl 字符串 有其他元字符,而 正则表达式 模式拥有所有双引号元字符,以及一些它们自己的额外元字符。

元符号

我们称之为 元字符 的东西,但它是一个由多个字符组成的序列。通常情况下,序列中的第一个字符必须是一个真正的元字符,才能让元符号中的其他字符也随之发生异常行为。

方法

如果告诉 对象,它可以采取的一种操作。请参阅 Camel 第 12 章,“对象”。

方法解析顺序

Perl 在 @INC 中采用的路径。默认情况下,这是一个双深度优先搜索,一次查找已定义的方法,一次查找 AUTOLOAD。但是,Perl 允许你使用 mro 配置此项。

minicpan

一个 CPAN 镜像,仅包含每个发行版的最新版本,可能使用 CPAN::Mini 创建。请参阅 Camel 第 19 章,“CPAN”。

极简主义

相信“小即是美”。矛盾的是,如果你用一门小语言说一些话,它会变得很大,如果你用一门大语言说,它会变得很小。去弄清楚吧。

模式

stat(2) 系统调用的上下文中,指的是保存 权限位文件 类型的字段。

修饰符

请参阅 语句修饰符正则表达式左值,不一定按此顺序。

模块

定义一个 (名称几乎相同)的 文件,它可以 导出 符号或充当 对象 类。(模块的主 .pm 文件还可以在支持模块时加载其他文件。)请参阅 use 内置函数。

当你对余数而不是商感兴趣时的整数除数。

乱码

当你使用一种语言说话,而计算机认为你在使用另一种语言时。例如,当你发送 UTF-8 时,你会看到奇怪的翻译,但计算机认为你发送的是 Latin-1,显示出各种奇怪的字符。这个术语在日语中写为「文字化け」,意思是“字符腐烂”,这是一个恰当的描述。在标准 IPA 音标中发音为 [modʑibake],或近似为“moh-jee-bah-keh”。

monger

Perl monger 的简称,Perl 的供应商。

mortal

当当前语句结束时计划销毁的临时值。

mro

参见 方法解析顺序

多维数组

具有多个下标以查找单个元素的数组。Perl 使用 引用 实现这些功能,请参见 Camel 第 9 章“数据结构”。

多重继承

从母亲和父亲那里得到的特征,以不可预测的方式混合在一起。(另请参见 继承单重继承。)在计算机语言(包括 Perl)中,它表示给定类可能有多个直接祖先或 基类

N

命名管道

一个 管道,其名称嵌入在 文件系统 中,以便两个不相关的 进程 可以访问它。

命名空间

名称域。您不必担心一个域中的名称是否已在另一个域中使用。请参见

NaN

非数字。Perl 用于某些无效或无法表示的浮点运算的值。

网络地址

套接字最重要的属性,就像您电话的电话号码一样。通常是 IP 地址。另请参见 端口

换行符

表示行尾的单个字符,在 Unix 下的 ASCII 值为 012 八进制(但在 Mac 上为 015),在 Perl 字符串中用 \n 表示。对于写入文本文件的 Windows 机器和某些物理设备(如终端),单个换行符会自动由 C 库转换为换行符和回车符,但通常情况下,不会进行转换。

NFS

网络文件系统,它允许您挂载远程文件系统,就好像它是本地文件系统一样。

规范化

将文本字符串转换为备用但等效的 规范(或兼容)表示形式,然后可以比较它们是否等效。Unicode 识别四种不同的规范形式:NFD、NFC、NFKD 和 NFKC。

空字符

数值为零的字符。C 语言使用它来终止字符串,但 Perl 允许字符串包含空值。

空列表

元素为零的列表值,在 Perl 中用 () 表示。

空字符串

不包含任何字符的字符串,不要与包含空字符的字符串混淆,后者具有正长度且为

数值上下文

表达式被其周围环境(调用它的代码)期望返回数字的情况。另请参见上下文字符串上下文

数字转换

(有时拼写为 nummificationnummify。)Perl 术语,表示隐式转换为数字;相关的动词是 numifyNumification 意在与 mummification 押韵,numifymummify 押韵。它与英语中的 numennuminanuminous 无关。我们最初在很久以前就忘记了额外的 m,有些人习惯了我们有趣的拼写方式,因此就像 HTTP_REFERER 自己的缺失字母一样,我们奇怪的拼写方式一直保留了下来。

NV

内华达州的简称,其任何部分都不会与文明混淆。NV 还表示标量可以保存的类型的内部浮点数值,不要与IV混淆。

半字节

半个字节,相当于一个十六进制数字,值等于四个

O

对象

实例。它“知道”它是什么用户定义类型(类),以及它因为是什么类而可以做什么。你的程序可以请求对象做事情,但对象可以决定是否要执行这些事情。有些对象比其他对象更能适应。

八进制

八进制数。仅允许数字 0 到 7。Perl 中的八进制常量以 0 开始,如 013。另请参阅 oct 函数。

偏移量

从字符串或数组的开头移动到其特定位置时必须跳过的内容数量。因此,最小偏移量为零,而不是一,因为您无需跳过任何内容即可获取第一项。

单行程序

将整个计算机程序塞进一行文本中。

开源软件

源代码免费提供且可自由再分发,无任何商业附加条件的程序。有关更详细的定义,请参阅 http://www.opensource.org/osd.html

操作数

产生 表达式运算符 对其进行操作。另请参阅 优先级

操作系统

在裸机上运行并隐藏管理 进程设备 的血腥细节的特殊程序。通常以更宽泛的意义使用,表示特定的编程文化。宽泛的意义可以在不同的特异性级别使用。在一种极端情况下,您可能会说所有版本的 Unix 和类 Unix 系统都是相同的操作系统(让许多人感到不安,尤其是律师和其他倡导者)。在另一种极端情况下,您可以说此特定供应商操作系统的此特定版本与此或任何其他供应商操作系统的任何其他版本不同。Perl 在跨操作系统方面的可移植性远高于许多其他语言。另请参阅 架构平台

运算符

将一些输入值转换为一些输出值的小工具,通常内置于语言中,带有特殊语法或符号。给定的运算符可能对您作为其参数(操作数)提供的数据 类型 以及您希望从其返回的数据类型有特定期望。

运算符重载

您可以对内置 运算符 执行的一种 重载,使其对 对象 起作用,就好像对象是普通标量值一样,但实际语义由对象类提供。这通过重载 编译指示 设置,请参阅 Camel 第 13 章“重载”。

选项

请参阅 开关正则表达式修饰符

序数

抽象字符的整数值。与 代码点 相同。

重载

为符号或构造提供其他含义。实际上,所有语言都在一定程度上进行重载,因为人们善于从 上下文 中找出事物。

覆盖

隐藏或使同名的其他定义无效。(不要与 重载 混淆,后者添加必须通过其他方式消除歧义的定义。)为了进一步混淆问题,我们使用这个词来表示两个重载的定义:描述如何定义自己的 子例程 来隐藏同名的内置 函数(请参阅 Camel 第 11 章“模块”中的“覆盖内置函数”一节),以及描述如何在 派生类 中定义替换 方法 来隐藏 基类 的同名方法(请参阅 Camel 第 12 章“对象”)。

所有者

除了超级用户之外,对 文件 拥有绝对控制权的一个用户。如果真正的所有者允许,文件还可以拥有一 用户,这些用户可以行使共同所有权。请参阅 权限位

P

全局 变量子例程 等的 命名空间,以便可以将它们与其他命名空间中同名的 符号 分开。从某种意义上说,只有包是全局的,因为包符号表中的符号只能通过在包外部 编译的代码并命名包才能访问。但从另一个意义上说,所有包符号也是全局的——它们只是组织良好的全局符号。

填充

scratchpad 的缩写。

参数

参见 参数

父类

参见 基类

解析树

参见 语法树

解析

一种微妙但有时残酷的艺术,尝试将您可能格式错误的程序转换成一个有效的 语法树

补丁

通过应用一个补丁来修复,就像它一样。在黑客领域,程序的两个版本之间的差异列表,当您想要修复错误或升级旧版本时,可以使用 patch(1) 程序应用该列表。

PATH

系统搜索以查找您想要 执行 的程序的 目录 列表。该列表存储为您的一个 环境变量,在 Perl 中可作为 $ENV{PATH} 访问。

路径名

一个完全限定的文件名,例如 /usr/bin/perl。有时与 PATH 混淆。

模式

用于 模式匹配 的模板。

模式匹配

获取一个模式,通常是一个 正则表达式,并尝试在字符串上以各种方式尝试该模式,以查看是否有任何方法可以使其匹配。通常用于从文件中挑选出有趣的信息片段。

PAUSE

Perl 作者上传服务器 (http://pause.perl.org),是 模块 在进入 CPAN 途中的网关。

Perl 贩子

一个 Perl 用户组,其名称形式取自纽约 Perl 贩子,第一个 Perl 用户组。在 http://www.pm.org 找到您附近的 Perl 贩子。

权限位

文件 所有者 设置或取消设置的位,以允许或禁止其他人访问。这些标志位是当您询问文件时由 stat 内置函数返回的 模式 字的一部分。在 Unix 系统上,您可以在 ls(1) 手册页中查看更多信息。

Pern

当您两次执行 Perl++ 时得到的结果。只执行一次会卷曲你的头发。您必须递增它八次才能洗头。起泡、冲洗、迭代。

管道

一个直接连接,它将一个进程的输出传输到另一个进程的输入,而无需中间临时文件。一旦管道建立,这两个进程就可以像与普通文件对话一样进行读写,但有一些注意事项。

管道

一系列进程全部排成一排,通过管道连接,其中每个进程将其输出流传递给下一个进程。

平台

程序运行的整个硬件和软件环境。如果更改以下任何一项,用平台相关语言编写的程序可能会中断:机器、操作系统、库、编译器或系统配置。perl解释器必须针对每个平台进行不同的编译,因为它是在C中实现的,但用Perl语言编写的程序在很大程度上是与平台无关的。

pod

用于将文档嵌入到Perl代码中的标记。Pod代表“普通旧文档”。请参阅Camel第23章,“普通旧文档”。

pod命令

一个序列,例如=head1,表示pod部分的开始。

指针

C等语言中的变量,其中包含其他一些项目的精确内存位置。Perl在内部处理指针,因此您不必担心它们。相反,您只需以变量名称或硬引用的形式使用符号指针,而硬引用不是指针(但充当指针并实际上包含指针)。

多态性

您可以告诉对象执行一些通用操作,并且对象将根据其类型以不同的方式解释命令。 [<希腊语 πολυ- + μορϕή,多种形式。]

端口

TCP或UDP套接字地址的一部分,在找到正确的机器后将数据包定向到正确的进程,类似于您在联系公司运营商时提供的分机号。还可以将代码转换为在与最初预期的不同的平台上运行,或者表示此转换的动词。

可移植的

曾经,BSD和SysV下可编译的C代码。一般来说,可以轻松转换为在另一个平台上运行的代码,其中“轻松”可以根据您的喜好定义,并且通常是这样。如果您努力尝试,任何东西都可以被认为是可移植的,例如活动房屋或伦敦桥。

搬运工

将软件从一个平台“移植”到另一个平台的人。用平台相关语言(如 C)编写的移植程序可能很困难,但移植 Perl 等程序非常值得付出努力。

所有格

指模式中的量词和组,一旦它们抓住某些内容,就绝不会放弃。比更正式的不可回溯更容易理解和说出。

POSIX

可移植操作系统接口规范。

后缀

一个运算符,位于其操作数之后,如$x++

pp

“压入-弹出”代码的内部缩写;即,实现 Perl 栈机的 C 代码。

pragma

一个标准模块,其实用提示和建议在编译时接收(也可能被忽略)。Pragmas 以全小写命名。

优先级

在没有其他指导的情况下,确定应首先执行的操作的行为规则。例如,在没有括号的情况下,始终先执行乘法,再执行加法。

前缀

一个运算符,位于其操作数之前,如++$x

预处理

某些辅助进程将传入数据转换为更适合当前进程的形式所执行的操作。通常使用传入的管道完成。另请参见C 预处理器

主要维护者

PAUSE 允许其为命名空间分配共同维护者权限的作者。主要维护者可以通过将其分配给其他 PAUSE 作者来放弃此权限。参见 Camel 第 19 章,“CPAN”。

过程

一个子例程

进程

正在运行的程序的一个实例。在 Unix 等多任务系统中,两个或更多个独立进程可以同时独立运行同一程序——事实上,fork 函数旨在实现这种令人高兴的状态。在其他操作系统中,进程有时称为“线程”、“任务”或“作业”,通常在含义上略有细微差别。

程序

参见 脚本

程序生成器

一个用算法为你编写高级语言代码的系统。另请参见 代码生成器

渐进匹配

模式匹配 匹配>从它上次停止的地方继续。

属性

参见 实例变量字符属性

协议

在网络中,一种商定的来回发送消息的方式,以便任何一方都不会太困惑。

原型

子例程 声明的一个可选部分,它告诉 Perl 编译器可以作为 实际参数 传递多少个和什么类型的参数,以便你可以编写非常像内置函数的子例程调用。(或者不解析,视情况而定。)

伪函数

有时看起来像函数但实际上不是函数的结构。通常保留用于 左值 修饰符(如 my)、用于 上下文 修饰符(如 scalar)以及用于选择自己引号的结构 q//qq//qx//qw//qr//m//s///y///tr///

伪哈希

以前,对数组的引用,其初始元素恰好保存对哈希的引用。你过去能够将伪哈希引用视为数组引用或哈希引用。伪哈希不再受支持。

伪字面量

运算符 X,看起来像 字面量,例如输出抓取运算符,<literal moreinfo="none"`>command`

公共领域

不属于任何人的东西。Perl 具有版权,因此属于公共领域——它只是 免费提供免费再分发

南瓜

在 Perl 社区中流传的虚拟“接力棒”,表示在某个开发领域中谁是主要集成者。

pumpking

南瓜持有者,负责抽水或至少启动抽水的人。必须愿意时不时扮演大南瓜的角色。

PV

“指针值”,Perl 内部术语,表示 char*

Q

qualified

拥有完整名称。符号 $Ent::moot 是限定的;$moot 是非限定的。完全限定的文件名是从顶级目录指定的。

quantifier

正则表达式 的一个组成部分,指定前面 原子 可以出现多少次。

R

race condition

当几个相互关联的事件的结果取决于这些事件的顺序,但由于不确定的时间效应无法保证该顺序时,就会出现竞争条件。如果两个或更多程序或同一程序的不同部分尝试经历同一系列事件,一个程序可能会中断另一个程序的工作。这是发现 漏洞 的好方法。

readable

对于文件,设置了适当的权限位以允许你访问该文件。对于计算机程序,编写得足够好,让人有机会弄清楚它试图做什么。

reaping

进程 为已故子进程执行的最后仪式,以使其不保持 僵尸 状态。请参见 waitwaitpid 函数调用。

record

文件 中的一组相关数据值,通常与唯一的 字段相关联。在 Unix 中,通常与 或以空行结尾的一组行(“段落”)相称。/etc/passwd 文件的每一行都是一条记录,以登录名为键,包含有关该用户的信息。

recursion

用它本身(至少部分地)定义某物的艺术,在字典中这是个禁忌,但在计算机程序中通常可以正常工作,如果你小心不要永远递归(这就像一个无限循环,但失败模式更壮观)。

引用

您在其他地方查找信息指针的位置。(请参阅 间接引用。)引用有两种类型:符号引用硬引用

被引用对象

引用所引用的任何内容,它可能有名,也可能没有。常见的被引用对象类型包括标量、数组、哈希和子例程。

正则表达式

请参阅 正则表达式

正则表达式

具有多种解释的单一实体,如大象。对于计算机科学家来说,它是小语言的语法,其中一些字符串合法,而另一些则不合法。对于普通人来说,它是一种模式,当模式因情况而异时,您可以使用它来找到您要查找的内容。从理论意义上讲,Perl 的正则表达式远非正则,但在常规使用中它们工作得很好。以下是一个正则表达式:/Oh s.*t./。这将匹配“Oh say can you see by the dawn's early light”和“Oh sit!”等字符串。请参阅 Camel 第 5 章,“模式匹配”。

正则表达式修饰符

模式或替换上的选项,例如 /i 使模式不区分大小写。

常规文件

不是 目录设备、命名 管道套接字符号链接文件。Perl 使用 –f 文件测试运算符来识别常规文件。有时称为“普通”文件。

关系运算符

一个 运算符,它表示特定排序关系是否 true 关于一对 操作数。Perl 具有数字和字符串关系运算符。请参阅 排序序列

保留字

对于 编译器 具有特定内置含义的单词,例如 ifdelete。在许多语言(不是 Perl)中,使用保留字来命名其他任何内容都是非法的。(毕竟这就是它们被保留的原因。)在 Perl 中,您不能使用它们来命名 标签文件句柄。也称为“关键字”。

返回值

评估时由 子例程表达式 生成的 。在 Perl 中,返回值可以是 列表标量

RFC

征求意见稿,尽管名称内涵比较含蓄,但它是一系列重要标准文档的名称。

右移

将数字除以 2 的某个幂的位移

角色

一组具体行为的名称。角色是一种在不使用继承的情况下向类添加行为的方法。

超级用户 (UID == 0)。也是文件系统的顶级目录。

RTFM

当有人认为你应该阅读精细手册时,他们会告诉你什么。

运行阶段

Perl 开始运行你的主程序后的任何时间。另请参阅编译阶段。运行阶段主要在运行时度过,但也可能在编译时度过,当执行requiredo FILEeval STRING运算符时,或者当替换使用/ee修饰符时。

运行时

Perl 实际执行你的代码所述操作的时间,与之前尝试找出你所说的内容是否合理的时间相反,即编译时

运行时模式

包含一个或多个变量的模式,在将模式解析为正则表达式之前进行插值,因此无法在编译时进行分析,但必须在每次评估模式匹配运算符时重新进行分析。运行时模式很有用,但开销很大。

RV

休闲车,不要与车辆娱乐混淆。RV 也表示标量可以保存的类型的内部引用值。如果你还没有感到困惑,请参阅IVNV

右值

你可能在赋值的右侧找到的。另请参阅左值

S

沙盒

一个封闭的区域,不应该影响到其围墙之外。你让孩子们在沙盒里玩,而不是在马路上跑。请参阅 Camel 第 20 章,“安全性”。

标量

一个简单、单一的值;一个数字、字符串引用

标量上下文

表达式的周围(调用它的代码)期望它返回一个单一的而不是一个列表值的情况。另请参见上下文列表上下文。标量上下文有时会对返回值施加附加约束——请参见字符串上下文数字上下文。有时我们在条件语句中讨论布尔上下文,但这不会施加任何附加约束,因为任何标量值,无论是数字还是字符串,都是真或假。

标量字面量

一个数字或带引号的字符串——与变量相对,是程序文本中的一个实际

标量值

恰好是标量而不是列表的值。

标量变量

一个以$为前缀的变量,它保存一个单一值。

作用域

从多远的地方可以看到一个变量,通过一个变量进行查看。Perl 有两种可见性机制。它对local变量进行动态作用域,这意味着的其余部分以及块的其余部分调用的任何子例程都可以看到块的局部变量。Perl 对my变量进行词法作用域,这意味着块的其余部分可以看到该变量,但块调用的其他子例程不能看到该变量。

草稿纸

特定文件或子例程的特定调用保留其一些临时值(包括任何词法作用域变量)的区域。

脚本

一个文本文件,它是一个程序,旨在直接执行,而不是在执行之前编译为另一种形式的文件。

此外,在Unicode的上下文中,它是特定语言或语言组的书写系统,例如希腊语、孟加拉语或Tengwar。

脚本小子

一个黑客,他不是黑客,但知道足够多的知识来运行罐头脚本。货运崇拜程序员。

sed

Perl从中派生出一些想法的古老流编辑器。

信号量

一种奇特的互锁,可防止多个线程进程同时使用相同的资源。

分隔符

一个字符字符串,它可以防止两个周围的字符串混淆。split函数对分隔符起作用。不要与定界符终止符混淆。前一句中的“或”将这两个选项分开。

序列化

将奇特的数据结构放入线性顺序,以便可以将其存储为磁盘文件或数据库中的字符串,或通过管道发送。也称为编组。

服务器

在网络中,进程要么宣传服务,要么只是在已知位置闲逛,等待需要服务与之联系的客户端

服务

您为他人做的事情,让他们开心,比如给他们一天的时间(或他们的生活)。在某些计算机上,getservent函数会列出众所周知的服务。

setgid

setuid相同,只是与放弃权限有关。

setuid

对于一个程序来说,它以其所有者的权限而不是(通常情况下)运行它的任何人的权限运行。还描述了模式词(权限位)中控制该功能的位。此位必须由所有者显式设置才能启用此功能,并且必须仔细编写程序,不要放弃比应有的更多的权限。

共享内存

一段内存,可由两个不同的进程访问,否则他们将看不到彼此的内存。

shebang

爱尔兰语,指整个 McGillicuddy。在 Perl 文化中,“sharp”和“bang”的混成词,表示#!序列,告诉系统在哪里找到解释器。

shell

一个 命令解释器。交互式地提供提示符、接受一行或多行 输入并执行您提到的程序的程序,为它们提供各自的 参数 和输入数据。Shell 还可以执行包含此类命令的脚本。在 Unix 下,典型的 Shell 包括 Bourne Shell (/bin/sh)、C Shell (/bin/csh) 和 Korn Shell (/bin/ksh)。Perl 不是严格意义上的 Shell,因为它不是交互式的(尽管 Perl 程序可以是交互式的)。

副作用

在计算 表达式 时发生的额外情况。现在它几乎可以指任何事情。例如,计算一个简单的赋值语句通常具有将值赋给变量的“副作用”。(而您最初认为赋值是您的主要意图!)同样,将值赋给特殊变量 $| ($AUTOFLUSH) 的副作用是强制在当前选定的文件句柄上每次 writeprint 后刷新。

符号

在魔法中使用的符号。或者,对于 Perl,变量名前面的符号,例如 $@%

信号

晴天霹雳;也就是说,由 操作系统 触发的事件,可能发生在您最意想不到的时候。

信号处理程序

一个 子例程,它不满足于以正常方式被调用,而是等待晴天霹雳,然后才屈尊 执行。在 Perl 下,晴天霹雳称为信号,您可以使用 kill 内置函数发送信号。请参阅 Camel 第 25 章“特殊名称”中的 %SIG 哈希和 Camel 第 15 章“进程间通信”中的“信号”部分。

单继承

如果您母亲告诉您您没有父亲,那么您从她那里获得的特征。(另请参见 继承多重继承。)在计算机语言中, 无性繁殖的想法,因此给定的类只能有一个直接祖先或 基类。Perl 没有提供这样的限制,但如果您愿意,当然可以以这种方式编程 Perl。

切片

列表数组哈希 中选择的任意数量的 元素

吸入

要一次性将整个 文件 读入 字符串 中。

套接字

网络通信中多个 进程 之间的端点,其工作方式与电话或邮政信箱非常相似。套接字最重要的部分是其 网络地址(如电话号码)。不同类型的套接字具有不同类型的地址——有些看起来像文件名,有些则不是。

软引用

参见 符号引用

源过滤器

一种特殊的 模块,在脚本进入 标记器 之前对其进行 预处理

堆栈

一种设备,可以将东西放在其顶部,然后以与放置顺序相反的顺序将其取回。参见 LIFO

标准

包含在官方 Perl 发行版中,如标准模块、标准工具或标准 Perl 手册页

标准错误

不属于 标准输出 的讨厌备注的默认输出 。在 Perl 程序中由输出> 文件句柄 STDERR 表示。你可以显式使用此流,但 diewarn 内置函数会自动写入你的标准错误流(除非被捕获或以其他方式拦截)。

标准输入

程序的默认输入 ,如果可能,它不应该关心其数据来自何处。在 Perl 程序中由 文件句柄 STDIN 表示。

标准 I/O

用于对 缓冲 输入和输出到 操作系统 的标准 C 库。(标准 I/O 的“标准”与标准输入和输出的“标准”关系不大。)通常,Perl 依赖于给定操作系统提供的标准 I/O 的任何实现,因此一台机器上 Perl 程序的缓冲特性可能与另一台机器上的特性不完全匹配。通常,这只会影响效率,而不是语义。如果您的标准 I/O 包正在进行块缓冲,而您希望它更频繁地 刷新 缓冲区,只需将 $| 变量设置为真值即可。

标准库

随官方 perl 发行版附带的所有内容。某些供应商版本的 perl 会更改其发行版,省略某些部分或包含额外内容。另请参见 双重生命

标准输出

程序的默认输出 ,如果可能,它不应该关心其数据流向何处。由 文件句柄 STDOUT 在 Perl 程序中表示。

语句

一条有关接下来要做什么的计算机 命令,就像食谱中的一个步骤:“将果酱添加到面糊中并搅拌至混合均匀”。语句与 声明 不同,后者不会告诉计算机执行任何操作,而只是学习一些内容。

语句修饰符

一种 条件循环,如果您知道我们的意思,您可以在 语句 之后而不是之前放置它。

静态

与其他事物相比变化缓慢。(不幸的是,除了某些基本粒子之外,所有事物与其他事物相比都是相对稳定的,而我们对它们也不太确定。)在计算机中,事物应该快速变化,“静态”具有贬义的含义,表示一个略有功能障碍的 变量子例程方法。在 Perl 文化中,礼貌地避免使用这个词。

如果您是 C 或 C++ 程序员,您可能会寻找 Perl 的 state 关键字。

静态方法

没有这种东西。请参阅 类方法

静态作用域

没有这种东西。请参阅 词法作用域

静态变量

没有这种东西。只需在比您的 子例程 更大的作用域中使用 词法变量,或使用 state 而不是 my 声明它。

stat 结构

Perl 存储有关您请求信息的最后一个 文件 的信息的一个特殊内部位置。

状态

当其一个子进程死亡时返回给父 进程。此值放置在特殊变量 $? 中。它的前八个 是已终止进程的退出状态,其后八个位标识进程死亡时发出的信号(如果存在)。在 Unix 系统上,此状态值与 wait(2) 返回的状态字相同。请参阅 Camel 第 27 章“函数”中的 system

STDERR

请参阅 标准错误

STDIN

请参阅 标准输入

STDIO

请参阅 标准 I/O

STDOUT

请参阅 标准输出

作为字节或字符的稳定序列流入或流出进程的数据流,没有出现被分解为数据包的情况。这是一种 接口——底层 实现 可能会将您的数据分解为单独的数据包进行传递,但这对您是隐藏的。

字符串

诸如“他说 !@#*&%@#*?!” 之类的字符序列。字符串不必完全可打印。

字符串上下文

表达式在其周围环境(调用它的代码)中预期返回 字符串 的情况。另请参阅 上下文数字上下文

字符串化

生成抽象对象的 字符串 表示形式的过程。

结构

C 关键字,用于引入结构定义或名称。

结构

请参阅 数据结构

子类

请参阅 派生类

子模式

正则表达式 模式的组件。

子例程

程序中已命名或可访问的部分,可以从程序中的其他位置调用,以完成程序的某个子目标。子例程通常被参数化,以便根据其输入 参数 完成不同但相关的事情。如果子例程返回有意义的 ,则它也称为 函数

下标

,表示数组中特定 数组 元素 的位置。

替换

通过 s/// 运算符更改字符串的部分。(我们避免使用此术语表示 变量插值。)

子字符串

字符串 的一部分,从某个 字符 位置(偏移量)开始,并继续进行一定数量的字符。

超类

参见 基类

超级用户

操作系统 几乎允许其执行任何操作的人。通常是系统管理员或冒充系统管理员的人。在 Unix 系统上,root 用户。在 Windows 系统上,通常是管理员用户。

SV

“标量值”的缩写。但在 Perl 解释器中,每个 引用 都被视为以面向对象的方式从 SV 派生的类的成员。Perl 中的每个 都作为 C 语言 SV* 指针传递。SV 结构 知道其自己的“引用类型”,并且我们希望代码足够智能,不会尝试对 子例程 调用 哈希 函数。

switch

在命令行中给出的选项,用于影响程序的工作方式,通常以减号开头。该词还用作 switch 语句 的别名。

switch 集群

将多个命令行开关(例如–a –b –c)组合成一个开关(例如–abc)。带有附加 参数 的任何开关都必须是集群中的最后一个开关。

switch 语句

一种程序技术,它允许你计算一个 表达式,然后根据表达式的值,对该值执行多路分支到适当的代码段。也称为“case 结构”,以类似的 Pascal 构造命名。Perl 中的大多数 switch 语句拼写为 given。请参阅 Camel 第 4 章“语句和声明”中的“given 语句”。

符号

通常,任何 标记元符号。通常更具体地用于表示你可能在 符号表 中找到的名称类型。

符号调试器

一个程序,它允许你逐步执行程序的 执行,在此处和彼处停止或打印内容,以查看是否有任何错误,如果有,是什么错误。“符号”部分仅表示你可以使用编写程序时使用的相同符号与调试器对话。

指向真实 文件名 的备用文件名,该文件名又指向真实 文件。每当 操作系统 尝试解析包含符号链接的 路径名 时,它仅替换新名称并继续解析。

符号引用

一个变量,其值是另一个变量或子例程的名称。通过解除引用第一个变量,你可以得到第二个变量。在 use strict "refs" 下,符号引用是非法的。

符号表

一个编译器记住符号的地方。像 Perl 这样的程序必须以某种方式记住你使用过的所有变量文件句柄子例程的所有名称。它通过将名称放在符号表中来实现这一点,符号表在 Perl 中使用哈希表实现。每个都有一个单独的符号表,以赋予每个包自己的命名空间

同步

可以确定事件有序序列的编程;也就是说,当事情一个接一个发生时,而不是同时发生。

语法糖

一种更轻松地编写内容的替代方法;一种捷径。

语法

来自希腊语 σύνταξις,“with-arrangement”。事物(特别是符号)如何相互组合在一起。

语法树

程序的内部表示,其中较低级别的构造悬挂在包围它们的较高级别的构造上。

系统调用

直接调用操作系统函数。你使用的许多重要的子例程和函数都不是直接的系统调用,而是在系统调用级别之上的一层或多层中构建的。一般来说,Perl 程序员不必担心这种区别。但是,如果你碰巧知道哪些 Perl 函数实际上是系统调用,那么你可以预测其中哪些函数将在失败时设置 $! ($ERRNO) 变量。不幸的是,初学者经常混淆地使用术语“系统调用”来表示当你调用 Perl system 函数时发生的事情,而这实际上涉及许多系统调用。为了避免任何混淆,我们几乎总是对你可以通过 Perl 的 syscall 函数间接调用的内容说“系统调用”,而绝不会对你要用 Perl 的 system 函数调用内容说“系统调用”。

T

污染检查

Perl 跟踪外部数据通过程序的流并禁止它们在系统命令中使用的特殊记账。

污染的

指来自用户肮脏之手的、因此不安全供安全程序依赖的数据。如果你运行setuid(或setgid)程序,或者使用 –T 开关,Perl 会进行污染检查。

污染模式

–T 开关下运行,将所有外部数据标记为可疑数据,并拒绝使用系统命令。请参阅 Camel 第 20 章“安全性”。

TCP

传输控制协议的简称。一种围绕 Internet 协议进行封装的协议,使不可靠的数据包传输机制在应用程序中显示为可靠的字节。(通常)

术语

终端的简称,即语法树的叶节点。在表达式中充当运算符的操作数的语法功能。

终止符

标记另一个字符串结尾的字符字符串$/ 变量包含终止 readline 操作的字符串,chomp 从结尾删除该字符串。不要与定界符分隔符混淆。此句末尾的句号是一个终止符。

三元

一个运算符,采用三个操作数。有时发音为三元

文本

主要包含可打印字符的字符串文件

线程

类似于分叉进程,但没有fork固有的内存保护。线程比完整进程更轻量,因为一个进程可以有多个线程在其中运行,除非采取措施保护线程彼此不受影响,否则所有线程都在争夺同一个进程的内存空间。

绑定

魔术变量与其实现类之间的联系。请参阅 Camel 第 27 章“函数”和 Camel 第 14 章“绑定变量”中的 tie 函数。

标题大小写

用于大写字母后面跟小写字母而不是更多大写字母的大小写。有时称为句子大小写或标题大小写。英语不使用 Unicode 标题大小写,但英语标题的大小写规则比简单地将每个单词的首字母大写要复杂。

TMTOWTDI

这是 Perl 的座右铭,有多种方法可以完成它。这个概念表示在解决编程问题时可能有多种有效路径(这并不意味着更多的方法总是更好,或者所有可能的路径都同样理想——只是不需要唯一正确的方法)。

标记

编程语言中的词素,具有语义意义的最小文本单位。

标记器

一个模块,它将程序文本分解为一系列标记,以便解析器稍后进行分析。

标记化

将程序文本拆分为标记。也称为“词法分析”,在这种情况下,您将获得“词素”而不是标记。

工具箱方法

这个概念表示,使用一组完整且协同良好的简单工具,您可以构建几乎任何您想要的东西。如果您正在组装三轮车,这很好,但如果您正在构建一个去弗朗西化组合通量反流器,您真的需要自己的机器车间来构建专用工具。Perl 就像一个机器车间。

主题

您正在处理的事情。while(<>)forforeachgiven等结构通过分配给$_(默认(主题)变量)来为您设置主题。

音译

通过将源字符串的每个字符映射到结果字符串中的对应字符,将一个字符串表示转换为另一个字符串表示。不要与翻译混淆:例如,希腊语πολύχρωμος音译为polychromos,但翻译为many-colored。请参阅 Camel 第 5 章“模式匹配”中的tr///运算符。

触发器

导致运行处理程序的事件。

三元

不是具有三颗恒星的恒星系统,而是接受三个操作数运算符。有时发音为三元

troff

一种古老的排版语言,Perl 从中派生了其$%变量的名称,并且秘密用于制作 Camel 书籍。

不计算为 0 或""的任何标量值。

截断

清空文件中的现有内容,可以在打开文件进行写入时自动清空,也可以通过 truncate 函数显式清空。

类型

参见 数据类型

类型转换

将数据从一种类型转换为另一种类型。C 允许这样做。Perl 不需要这样做。也不想这样做。

typedef

C 和 C++ 语言中的类型定义。

类型词法

使用 类型声明的 词法变量 词法>:my Pony $bill

类型全局

使用带有 * 前缀的单个标识符。例如,*name 表示 $name@name%name&name 或仅 name 中的任何一个或全部。如何使用它决定了它是被解释为全部还是仅其中之一。参见 Camel 第 2 章“Bits and Pieces”中的“Typeglobs and Filehandles”。

类型映射

在使用 XS 编写的 扩展 模块中,C 类型如何转换为 Perl 类型以及从 Perl 类型转换为 C 类型的说明。

U

UDP

用户数据报协议,通过 Internet 发送 数据报 的典型方式。

UID

用户 ID。通常在 文件进程 所有权的上下文中使用。

umask

创建文件或目录时应强制关闭的那些 权限位 的掩码,以便建立通常拒绝访问的策略。参见 umask 函数。

一元运算符

只有一个 操作数 的运算符,如 !chdir。一元运算符通常是前缀运算符;也就是说,它们位于其操作数之前。++–– 运算符可以是前缀或后缀运算符。(它们的位置确实改变了它们的含义。)

Unicode

一个字符集,或多或少包括世界上所有主要的字符集。参见 http://www.unicode.org

Unix

一种非常庞大且不断发展的语言,具有多种替代且在很大程度上不兼容的语法,任何人都可以按照自己的选择定义任何内容,而且通常也会这样做。这种语言的使用者认为它很容易学习,因为它很容易扭曲成自己的目的,但方言差异使得部落间的交流几乎不可能,旅行者常常被简化为一种类似于洋泾浜英语的语言子集。为了被普遍理解,Unix shell 程序员必须花费多年的时间来学习这门艺术。许多人已经放弃了这门学科,现在通过一种类似于世界语的语言 Perl 进行交流。

在古代,Unix 也用来指贝尔实验室中几个人编写的代码,用于利用一台当时并没有太多其他用途的 PDP-7 计算机。

大写

在 Unicode 中,不仅是通用类别为大写字母的字符,还有任何具有大写属性的字符,包括一些字母数字和符号。不要与 标题大小写 混淆。

V

实际的数据片段,与访问该值所需的所有变量、引用、键、索引、运算符和其它内容形成对比。

变量

一个已命名的存储位置,可以保存任何各种类型的 ,具体取决于程序的需要。

变量插值

标量或数组变量 插值到字符串中。

变参

用于 函数,该函数愉快地接收不确定的 实际参数 数。

向量

数学术语,表示 标量值 列表。

虚拟

提供某事物的表象,而没有实际内容,例如:虚拟内存不是真实内存。(另请参阅 内存。)“虚拟”的反义词是“透明”,这意味着在没有表象的情况下提供某事物的实际内容,例如:Perl 以透明的方式处理可变长度的 UTF-8 字符编码。

空上下文

一种 标量上下文,其中预期 表达式 根本不返回任何 ,并且仅针对其 副作用 进行求值。

v 字符串

使用 v 后跟一系列以点分隔的十进制整数指定的“版本”或“向量”字符串,例如 v1.20.300.4000。每个数字都会变成具有指定序数值的 字符。(当至少有三个整数时,v 是可选的。)

W

警告

打印到 STDERR 流中的消息,表示可能出现问题,但不足以引发错误。请参阅 Camel 第 27 章“函数”中的 warn 和 Camel 第 28 章“实用模块”中的 warnings 编译指示。

监视表达式

当其值发生变化时,将在 Perl 调试器中触发断点的表达式。

弱引用

不会被正常计数的引用。当所有对数据的正常引用消失时,数据也会消失。这对于永远不会消失的循环引用非常有用。

空白

一个字符,它会移动光标,但不会在屏幕上输出任何内容。通常指以下任一字符:空格、制表符、换行符、回车符或换页符。在 Unicode 中,匹配 Unicode 认为是空白的许多其他字符,包括 ɴ-ʙʀ。

单词

在正常的“计算机术语”中,是计算机最有效处理的数据块,通常为 32 位左右,或 2 的幂的倍数。在 Perl 文化中,它更常指字母数字标识符(包括下划线),或由空白或字符串边界限定的非空白字符字符串。

工作目录

当前目录操作系统会从中解释相对路径名。操作系统知道当前目录,因为您通过 chdir 告诉了它,或者因为您从父进程出生时的位置开始。

包装器

为您运行其他程序或子例程的程序或子例程,修改其某些输入或输出以更好地满足您的目的。

WYSIWYG

所见即所得。通常在屏幕上显示的内容与最终显示的方式相匹配时使用,例如 Perl 的 format 声明。也用于表示与魔法相反的意思,因为一切都会像它出现的那样工作,就像 open 的三个参数形式。

X

XS

一个非常出色、快速高效、明确外部的子例程,在现有的 C 或 C++ 中执行,或在一种令人兴奋的扩展语言(令人恼火的)XS 中执行。

XSUB

XS中定义的外部子例程

Y

yacc

又一个编译器编译器。没有它,Perl 可能就不会存在。请参阅 Perl 源代码发行中的文件 perly.y

Z

零宽度

匹配 字符 之间的 空字符串断言 子模式。

僵尸

已死亡(退出)但其父进程尚未通过调用 waitwaitpid 妥善收到其死亡通知的进程。如果您 fork,您必须在子进程退出后对其进行清理;否则,进程表将填满,您的系统管理员将对您不满意。

作者和版权

基于 Tom Christiansen、brian d foy、Larry Wall 和 Jon Orwant 合著的《Perl 编程》第四版的术语表。版权所有 (c) 2000、1996、1991、2012 O'Reilly Media, Inc。本文件可根据与 Perl 相同的条款分发。