Perl 的特殊变量是一组预定义的全局变量,用于访问程序状态、环境信息和控制行为。本文将介绍常见的特殊变量及其用法。
目录
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. 参考资料
站内链接
出站链接
- Perldoc: Special Variables – 官方特殊变量文档。
- Perl Maven: Special Variables – 特殊变量教程。
- CPAN – 下载相关模块。
其他资源
- 《Programming Perl》 – 特殊变量章节。
- X社区:搜索 #PerlSpecialVars 获取示例。
这篇指南详细介绍了Perl中特殊变量的种类和用途。如果需要更深入的内容(比如完整变量列表或性能影响),请告诉我!
发表回复