Perl 的特殊变量是一组预定义的全局变量,用于访问程序状态、环境信息和控制行为。本文将介绍常见的特殊变量及其用法。


目录

  1. 特殊变量概述
  2. 常用特殊变量
  3. 输入输出相关变量
  4. 正则表达式相关变量
  5. 环境与系统变量
  6. 自定义特殊变量
  7. 参考资料

1. 特殊变量概述

Perl 的特殊变量以符号(如 $@%)开头,通常具有特定用途:

  • 默认值:如 $_ 用于循环或正则。
  • 系统状态:如 $! 表示错误信息。
  • 可读写:部分变量可修改以改变行为。

站内链接:了解变量基础,见 Perl 变量


2. 常用特殊变量

$_

默认变量,常用于循环和函数:

use strict;
use warnings;

foreach (1..3) {
    print "$_\n";  # 1, 2, 3
}

$.

当前输入文件的行号:

open(my $fh, '<', 'input.txt') or die $!;
while (<$fh>) {
    print "行 $. : $_";
}
close $fh;

$$

当前进程ID:

print "进程ID:$$\n";

$0

脚本名称:

print "脚本名:$0\n";

3. 输入输出相关变量

$/

输入记录分隔符(默认换行符):

open(my $fh, '<', 'input.txt') or die $!;
{
    local $/ = undef;  # 读取整个文件
    my $content = <$fh>;
    print "$content";
}
close $fh;

$\

输出记录分隔符(默认无):

$\ = "\n";  # 每次 print 自动换行
print "Hello";
print "Perl";  # 输出两行

$,

输出字段分隔符:

$, = ", ";
my @list = ("a", "b", "c");
print @list;  # a, b, c
print "\n";

4. 正则表达式相关变量

$&

最后匹配的字符串:

"Perl is great" =~ /is/;
print "匹配:$&\n";  # is

$1, $2, …

捕获组:

"2025-03-25" =~ /(\d+)-(\d+)-(\d+)/;
print "年:$1, 月:$2, 日:$3\n";  # 年:2025, 月:03, 日:25

$`

匹配前的字符串,$' 匹配后的字符串:

"Perl is great" =~ /is/;
print "前:$`, 后:$'\n";  # 前:Perl , 后: great

站内链接:更多正则用法,见 Perl 正则表达式


5. 环境与系统变量

%ENV

环境变量:

print "PATH: $ENV{PATH}\n";
$ENV{USER} = "test";  # 修改环境变量

$!

系统错误信息:

open(my $fh, '<', 'missing.txt') or print "错误:$!\n";  # No such file...

$@

eval 捕获的异常:

eval { die "出错了"; };
print "异常:$@\n" if $@;  # 出错了

6. 自定义特殊变量

通过 %SIG 修改信号处理:

$SIG{INT} = sub { print "捕获Ctrl+C\n"; exit; };
print "运行中...\n";
sleep 10;  # 按Ctrl+C测试

站内链接:错误处理相关,见 Perl 错误处理


7. 参考资料

站内链接

出站链接

其他资源

  • 《Programming Perl》 – 特殊变量章节。
  • X社区:搜索 #PerlSpecialVars 获取示例。

这篇指南详细介绍了Perl中特殊变量的种类和用途。如果需要更深入的内容(比如完整变量列表或性能影响),请告诉我!