Perl 特殊变量


Perl语言中有很多特殊变量,它们可以充分利用Perl语言的强大、灵活,方便、快捷地进行编程。这篇文档将简要介绍Perl 特殊变量,包括其中常用的一些变量。

  1. $_

Perl中最常用、最重要的特殊变量是 $_ 。在代码中没有指定变量时,Perl 通常会默认使用 $_ 。当你需要在代码中使用特定变量时,你可以使用 $_ 作为变量名或引用 $_ 的值。例如:

while (<STDIN>) {
    print if /Perl/;
}

上面的代码使用了 while 循环遍历输入文件,检查每一行是否包含 Perl 字符串。在 if 语句中,正则表达式可以匹配 $_ 中的行。

  1. @_

@_ 是Perl参数数组,它包含了函数或方法参数的列表。在Perl函数和方法中,参数通常被传递到 @_ 数组中。例如:

sub add {
    my ($a,$b) = @_;
    return $a + $b;
}
my $c = add(2,3);
print $c; #输出5

在函数 add 中,第一行将 @_ 赋值给了 $a 和 $b。函数使用了 $a 和 $b 进行加法计算,并将结果返回到 $c 变量中。当你调用函数时,将参数传递给函数,Perl会将这些参数传递给 @_ 数组。

  1. $.

$. 是Perl中的行号变量。当你读取文件时,Perl会自动维护 $. 变量,它跟踪了文件的当前行号。例如:

open(my $fh, '<', 'file.txt');
while (my $line = <$fh>) {
    print "$. $line";
}

上面的代码打开了文件 file.txt,然后在 while 循环中遍历文件中的每一行。在每次循环时,Perl会更新 $. 变量,以记录当前行号。接着,代码会将行号和每一行的内容打印出来。

  1. $/

$/ 是Perl中的输入记录分隔符,通常为换行符。读取文件和读取标准输入时,Perl会根据 $/ 变量的值进行分隔。默认情况下,$/ 变量值为换行符。例如:

open(my $fh,'<','file.txt');
while (my $line = <$fh>) {
    chomp($line);
    print "$line\n";
}

代码打开了文件 file.txt,然后一次性读取每一行记录。chomp 函数移除了 $line 中的换行符,然后代码将其打印出来。因为 $/ 变量设置为了默认的换行符,所以 Perl 会将每一行作为一个分隔符。

  1. $|

$| 是Perl中的输出缓冲控制变量。默认情况下,输出缓冲开启,Perl将缓存输出,直到缓冲区被刷新或程序结束。使用 $| = 1; 可以将缓冲区禁用,使输出直接输出到终端。例如:

$| = 1; #禁用输出缓冲
print "Hello, ";
sleep(1);
print "world!\n";

上面的代码打印了两个字符串,中间使用了休眠函数 sleep 模拟了1秒钟的等待。由于 $| 被设置为 1,所以字符串 “Hello, " 和 “world!” 直接输出到终端,而不会被缓存。

总之,Perl有数百个特殊变量,这里仅介绍了其中常用的一些变量。熟练掌握这些特殊变量,可以极大地提高Perl编程效率。