📜  Perl-特殊变量(1)

📅  最后修改于: 2023-12-03 15:18:18.019000             🧑  作者: Mango

Perl-特殊变量

Perl有许多特殊的变量。这些变量几乎都是以特殊字符开头的全局变量或局部变量,它们几乎总是包含一些需要在程序中特殊处理的信息。

$_变量

$_变量是Perl中使用最广泛的特殊变量。它是当前行和当前匹配中的默认变量。这意味着,如果你没有在程序中明确地指定要使用的变量,那么Perl将默认使用$_变量。

例如,如果你使用一个foreach循环遍历数组,那么内部的代码块将默认使用$_变量来表示当前的数组元素。

my @arr = (1, 2, 3, 4);

foreach (@arr) {
    print "$_\n";
}
@_变量

@_变量用于存储函数的参数列表。当你调用一个Perl函数时,它接收到的参数将存储在@_数组中。你可以使用它来访问调用函数时传递的参数。

sub add {
    my ($x, $y) = @_;

    return $x + $y;
}

print add(2, 3); # 输出 5
%_变量

%_变量是一个散列表,它可以被用来存储和传递各种上下文相关的信息。它通常被用来保存函数或模块的状态。

use feature qw(say);

sub my_function {
    if (! defined $_{'count'}) {
        $_{'count'} = 0;
    }

    $_{'count'} += 1;

    return "You have called this function $_{'count'} times.\n";
}

say my_function(); # 输出 “You have called this function 1 times.”
say my_function(); # 输出 “You have called this function 2 times.”
$/变量

$/变量用于指定Perl读取文件,都要在哪里停止。它通常被用于读取整行文本。默认情况下,它被设置为回车符。

open(my $fh, '<', 'file.txt');

while (<$fh>) {
    chomp; # 删除行尾的回车符
    print "$_\n";
}

close($fh);
$\变量

$\变量是一个输出行终止符。它用于控制在每个输出行的结尾处添加什么。默认情况下,它被设置为一个空字符串。

$\ = "\n"; # 将输出行终止符设置为换行符

print "Hello";
print "World";

输出:

Hello
World
$|变量

$|变量是一个输出缓冲控制器。它告诉Perl是否应该缓冲输出。如果将其设置为1,那么所有输出将立即被输出。如果将其设置为0,那么Perl将尽可能地缓冲输出以提高性能。

$| = 1; # 禁用输出缓冲

print "Hello";
sleep(2);
print "World";

输出:

HelloWorld
@_和@ARGV的区别

@_是一个数组,它存储了函数的参数列表。@ARGV也是一个数组,它存储了程序的命令行参数。这两个数组有相同的语法结构,但它们的目的和用途是不同的。

# 函数参数列表
sub my_function {
    my ($x, $y) = @_;

    print "x = $x, y = $y\n";
}

my_function(2, 3);

# 命令行参数列表
foreach (@ARGV) {
    print "$_\n";
}
$^O变量

$^O变量存储了Perl运行的操作系统的名称。它通常被用于检查正在运行的操作系统,以便写出特定于操作系统的程序。

if ($^O eq 'MSWin32') {
    print "This is Windows.\n";
}
else {
    print "This is not Windows.\n";
}