- Perl 基础知识
- Perl - 主页
- Perl - 简介
- Perl - 环境
- Perl - 语法概述
- Perl - 数据类型
- Perl - 变量
- Perl - 标量
- Perl - 数组
- Perl - 哈希
- Perl - IF...ELSE
- Perl - 循环
- Perl - 运算符
- Perl - 日期和时间
- Perl - 子例程
- Perl - 参考资料
- Perl - 格式
- Perl - 文件 I/O
- Perl - 目录
- Perl - 错误处理
- Perl - 特殊变量
- Perl - 编码标准
- Perl - 正则表达式
- Perl - 发送电子邮件
- Perl 高级
- Perl - 套接字编程
- Perl - 面向对象
- Perl - 数据库访问
- Perl - CGI 编程
- Perl - 包和模块
- Perl - 流程管理
- Perl - 嵌入式文档
- Perl - 函数参考
- Perl 有用资源
- Perl - 问题与解答
- Perl - 快速指南
- Perl - 有用的资源
- Perl - 讨论
Perl - 特殊变量
有一些变量在 Perl 中具有预定义的特殊含义。它们是在常用变量指示符($、@或%)之后使用标点字符的变量,例如$_(下面解释)。
大多数特殊变量都有类似英文的长名称,例如操作系统错误变量$!可以写成$OS_ERROR。但是,如果您要使用类似英语的名称,那么您必须在一行中使用英语;在程序文件的顶部。这引导解释器获取变量的确切含义。
最常用的特殊变量是 $_,它包含默认输入和模式搜索字符串。例如,在以下几行中 -
#!/usr/bin/perl foreach ('hickory','dickory','doc') { print $_; print "\n"; }
执行时,将产生以下结果 -
hickory dickory doc
再次,让我们在不显式使用 $_ 变量的情况下检查相同的示例 -
#!/usr/bin/perl foreach ('hickory','dickory','doc') { print; print "\n"; }
执行时,也会产生以下结果 -
hickory dickory doc
第一次执行循环时,会打印“hickory”。第二次,打印“dickory”,第三次,打印“doc”。这是因为在循环的每次迭代中,当前字符串都放置在 $_ 中,并且默认情况下由 print 使用。以下是 Perl 会假设 $_ 的地方,即使你没有指定它 -
各种一元函数,包括 ord 和 int 等函数,以及除 -t 之外的所有文件测试(-f、-d),默认为 STDIN。
各种列表功能,例如打印和取消链接。
模式匹配操作 m//、s/// 和 tr/// 在不使用 =~ 运算符时使用。
如果未提供其他变量,则为 foreach 循环中的默认迭代器变量。
grep 和 map 函数中的隐式迭代器变量。
当行输入操作的结果作为 while 测试的唯一标准进行自身测试时放置输入记录的默认位置(即 )。请注意,在一段时间的测试之外,这种情况不会发生。
特殊变量类型
根据特殊变量的用途和性质,我们可以将它们分为以下几类 -
- 全局标量特殊变量。
- 全局数组特殊变量。
- 全局哈希特殊变量。
- 全局特殊文件句柄。
- 全局特殊常数。
- 正则表达式特殊变量。
- 文件句柄特殊变量。
全局标量特殊变量
这是所有标量特殊变量的列表。我们列出了相应的英文名称以及符号名称。
$_ | 默认输入和模式搜索空间。 |
$ARG | |
$。 | 读取的最后一个文件句柄的当前输入行号。显式关闭文件句柄会重置行号。 |
$NR | |
$/ | 输入记录分隔符;默认换行。如果设置为空字符串,它将把空行视为分隔符。 |
$RS | |
$, | 打印操作符的输出字段分隔符。 |
$OFS | |
$\ | 打印操作员的输出记录分隔符。 |
$ORS | |
$” | 与“$”类似,但它适用于插入双引号字符串(或类似的解释字符串)中的列表值。默认是一个空格。 |
$LIST_SEPARATOR | |
$; | 多维数组模拟的下标分隔符。默认值为“\034”。 |
$SUBSCRIPT_SEPARATOR | |
$^L | 输出什么格式来执行换页。默认为“\f”。 |
$FORMAT_FORMFEED | |
$: | 当前的字符集,之后可以将字符串分解以填充格式中的连续字段(以 ^ 开头)。默认为“\n”。 |
$FORMAT_LINE_BREAK_CHARACTERS | |
$^A | 格式行写入累加器的当前值。 |
$累加器 | |
$# | 包含打印数字的输出格式(已弃用)。 |
$OFMT | |
$? | 最后一个管道关闭、反引号 (``) 命令或系统操作符返回的状态。 |
$CHILD_ERROR | |
$! | 如果在数字上下文中使用,则生成 errno 变量的当前值,标识最后一个系统调用错误。如果在字符串上下文中使用,则会产生相应的系统错误字符串。 |
$OS_ERROR 或 $ERRNO | |
$@ | 最后一个 eval 命令的 Perl 语法错误消息。 |
$EVAL_ERROR | |
$$ | 运行此脚本的 Perl 进程的 pid。 |
$PROCESS_ID 或 $PID | |
$< | 该进程的真实用户ID(uid)。 |
$REAL_USER_ID 或 $UID | |
$> | 该进程的有效用户ID。 |
$EFFECTIVE_USER_ID 或 $EUID | |
$( | 该进程的真实组ID(gid)。 |
$REAL_GROUP_ID 或 $GID | |
$) | 该进程的有效gid。 |
$EFFECTIVE_GROUP_ID 或 $EGID | |
$0 | 包含包含正在执行的 Perl 脚本的文件的名称。 |
$PROGRAM_NAME | |
$[ | 数组中第一个元素和子字符串中第一个字符的索引。默认值为 0。 |
$] | 返回版本加上补丁级别除以 1000。 |
$PERL_VERSION | |
$^D | 调试标志的当前值。 |
$调试 | |
$^E | 某些平台上的扩展错误消息。 |
$EXTENDED_OS_ERROR | |
$^F | 最大系统文件描述符,一般为2。 |
$SYSTEM_FD_MAX | |
$^H | 包含某些实用模块启用的内部编译器提示。 |
$^我 | 就地编辑扩展的当前值。使用 undef 禁用就地编辑。 |
$INPLACE_EDIT | |
$^M | $M 的内容可以用作紧急内存池,以防 Perl 因内存不足错误而终止。使用 $M 需要对 Perl 进行特殊编译。有关详细信息,请参阅安装文档。 |
$^O | 包含编译当前 Perl 二进制文件的操作系统的名称。 |
$OSNAME | |
$^P | 调试器清除的内部标志,以便它不会自行调试。 |
$PERLDB | |
$^T | 脚本开始运行的时间(自纪元以来的秒数)。 |
$基准时间 | |
$^W | 警告开关的当前值,true 或 false。 |
$警告 | |
$^X | Perl 二进制文件本身执行时的名称。 |
$EXECUTABLE_NAME | |
$ARGV | 包含从 <ARGV> 读取时当前文件的名称。 |
全局数组特殊变量
@ARGV | 包含用于脚本的命令行参数的数组。 |
@INC | 该数组包含查找要由 do、require 或 use 构造求值的 Perl 脚本的位置列表。 |
@F | 当给出 -a 命令行开关时,输入行被分割成的数组。 |
全局哈希特殊变量
%INC | 包含通过 do 或 require 包含的每个文件的文件名条目的哈希值。 |
%ENV | 包含您当前环境的哈希值。 |
%SIG | 用于设置各种信号的信号处理程序的哈希值。 |
全局特殊文件句柄
ARGV | 迭代 @ARGV 中的命令行文件名的特殊文件句柄。通常在 <> 中写为空文件句柄。 |
标准错误错误率 | 任何包中标准错误的特殊文件句柄。 |
标准输入 | 任何包中标准输入的特殊文件句柄。 |
标准输出 | 任何包中标准输出的特殊文件句柄。 |
数据 | 特殊文件句柄,引用包含脚本的文件中 __END__ 标记后面的任何内容。或者,只要您正在读取找到 __DATA__ 的同一个包中的数据,就可以使用所需文件中 __DATA__ 标记后面的任何内容的特殊文件句柄。 |
_(下划线) | 用于缓存来自最后一个 stat、lstat 或文件测试运算符的信息的特殊文件句柄。 |
全局特殊常数
__结尾__ | 指示程序的逻辑结束。任何后续文本都将被忽略,但可以通过 DATA 文件句柄读取。 |
__文件__ | 代表程序中使用该文件的位置处的文件名。未插入到字符串中。 |
__线__ | 代表当前行号。未插入到字符串中。 |
__包裹__ | 表示编译时当前的包名,如果当前没有包则为undefined。未插入到字符串中。 |
正则表达式特殊变量
$位 | 包含与最后匹配的模式中相应的括号组匹配的文本。例如,$1 匹配上一个正则表达式中第一组括号中包含的内容。 |
$& | 上次成功的模式匹配所匹配的字符串。 |
$匹配 | |
$` | 上次成功的模式匹配所匹配的内容之前的字符串。 |
$赛前 | |
$' | 上一次成功的模式匹配所匹配的字符串后面的字符串。 |
$赛后 | |
$+ | 最后一个括号与最后一个搜索模式匹配。如果您不知道匹配一组替代模式中的哪一个,这非常有用。例如: /版本:(.*)|修订版:(.*)/ && ($rev = $+); |
$LAST_PAREN_MATCH |
文件句柄特殊变量
$| | 如果设置为非零,则在当前选定的输出通道上每次写入或打印后强制执行 fflush(3)。 |
$OUTPUT_AUTOFLUSH | |
$% | 当前所选输出通道的当前页码。 |
$FORMAT_PAGE_NUMBER | |
$= | 当前所选输出通道的当前页面长度(可打印行数)。默认值为 60。 |
$FORMAT_LINES_PER_PAGE | |
$- | 当前所选输出通道页面上剩余的行数。 |
$FORMAT_LINES_LEFT | |
$~ | 当前所选输出通道的当前报告格式的名称。默认值是文件句柄的名称。 |
$FORMAT_NAME | |
$^ | 当前所选输出通道的当前页首格式的名称。默认值是附加 _TOP 的文件句柄的名称。 |
$FORMAT_TOP_NAME |