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