Perl 特殊变量

Perl 中的特殊变量是具有某些预定义含义的变量。这些变量用实际名称或标点符号表示。我们有一个特殊的变量用于所有 Perl 支持的变量,如标量特殊变量,数组特殊变量,哈希数组特殊变量。我们使用的大多数特殊变量都是标量。

当我们想要使用特殊变量及其名称时,我们必须加载一个 Perl 模块 using English,以明确地告诉 Perl 解释器我们将使用用其名称的特殊变量。

标量特殊变量

变量 说明
$_$ARG 这是存储当前值的默认变量。
$0 或$PROGRAM _NAME 存储 Perl 脚本的文件名。
$/ 输入记录分隔符,其默认值为 \n,即换行符
$. 保存正在读取的文件的当前行号
$, 输出字段分隔符,这主要由 print() 语句使用。默认值为 this,设置为 0,我们可以更改此变量的值。
$\ 输出记录分隔符,此变量的值将为空;我们可以为此分配任何值,print()语句将在打印输出时使用该值。
$# 此变量用于打印数字时的输出格式。
$%$FORMAT_PAGE_NUMBER 将保存读取的文件的当前页码。
$=$FORMAT_LINES_PER_PAGE 将保持读取文件的当前页面长度。
$-$FORMAT_LINES_LEFT 保持页面中剩余要打印的行数。
$~$FORMAT_NAME 格式名称:默认保存当前所选输出的格式为文件句柄名称。
$^$FORMAT_TOP_NAME 保存文件处理程序的标题格式的值,默认值为 _TOP,后跟文件句柄名称。
`$ $OUTPUT_AUTOFLUSH`
$$ 将保存 Perl 解释器的运行进程号。
$? 状态代码:管道和系统调用。执行命令的返回状态。
$&$MATCH 在正则表达式中使用,这将保存最后一次成功模式匹配的字符串。
$'$PREMATCH 在正则表达式中使用时,这将保持前一个成功模式匹配的字符串。
$'$POSTMATCH 在正则表达式中使用时,这将保存一个字符串,后跟最后一次成功的模式匹配。
$+$LAST_PAREN_MATCH 保存与最后一次模式搜索匹配的最后一个括号的字符串。
$<digit> 1 美元,2 美元,3 美元……保持按顺序匹配的模式的值。
$[ 第一个索引:Array,一个子字符串。
$\] Perl 的一个版本。
$" 用于列表元素的分隔符,默认值为空格
$; 用于多维数组的下标分隔符
$! 在数字上下文中,输出错误编号。在字符串上下文中,打印错误。
$@ 将保留语法错误信息,在使用 eval()时使用。
$< 保存运行脚本的进程的真实 UID(用户标识)。
$> 保存运行脚本的进程的有效 UID。
$( 保存运行脚本的进程的实际 GID(组 ID)
$) 保存运行脚本的进程的有效 GID。
$^D$DEBUGGING 保持调试标志的当前值。
$^C 使用-c 命令行开关时,保持标志的当前值。
$^F 默认情况下,最大系统文件描述符设置为 2
$^I$INPLACE _EDIT 保存-i 命令行开关的值。
$^M 当 Perl 脚本因外出内存错误而死亡时,可以使用特殊内存池。
$^O$OSNAME 存储操作系统信息。用于 Linux 系统的 Linux,用于 Windows 系统的 mswin32
$^T$BASETIME 脚本在几秒钟内运行的时间。
$^W$WARNING -w 命令行开关的当前值。警告开关。
$ARGV 使用 <> 时当前文件的名称。

数组特殊变量:

变量 说明
@INC 保存路径列表,在执行当前脚本时可以查看 Perl 库模块或脚本。这个@INC 由 use 和 require 语句用于查看库模块的那些路径。
@ARGV 存储传递的命令行参数。
@ _ 在子程序中使用,同时将参数传递给子程序。
@F 这是自动拆分-a(使用命令行开关)时存储输入行的数组。

哈希数组特殊变量:

变量 说明
%INC 文件名是键;值将是这些文件的路径。由 do,use 和 require 使用。
%ENV 系统环境变量。
%SIG 信号处理程序。

Perl 示例:

my $str= "Hello World";

$str =~ /llo/;

print "$&\n";    # this will hold string of the last successful pattern match

print "$'\n";        #this will hold remaining string after patter match is done.

print "$`\n";        #this will hold the string before the patter match.

$\= "--";            #output record separator (Check output of print on output screen)

my $a =5;

my $b =6;

print "$a";

print "$b";

$\="\n";

my @array = qw(a b c d);

print "";

$"="-";              # output record separator arrays (Check output of print on output screen)

print "@array";

输出

llo

World

He

5--6--

a-b-c-d