📅  最后修改于: 2023-12-03 15:18:18.019000             🧑  作者: Mango
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也是一个数组,它存储了程序的命令行参数。这两个数组有相同的语法结构,但它们的目的和用途是不同的。
# 函数参数列表
sub my_function {
my ($x, $y) = @_;
print "x = $x, y = $y\n";
}
my_function(2, 3);
# 命令行参数列表
foreach (@ARGV) {
print "$_\n";
}
$^O变量存储了Perl运行的操作系统的名称。它通常被用于检查正在运行的操作系统,以便写出特定于操作系统的程序。
if ($^O eq 'MSWin32') {
print "This is Windows.\n";
}
else {
print "This is not Windows.\n";
}