🐫 Perl
概述:Perl 由 Larry Wall 于 1987 年发布,是一种通用的高级脚本语言。Perl 以其强大的文本处理能力闻名,"实用提取与报告语言"(Practical Extraction and Report Language)正是其设计初衷。Perl 的座右铭是"There's more than one way to do it"(条条大路通罗马)。
概述
Perl 属于 其他小众/经典语言 分类。Perl 在 Web 早期(CGI 时代)是服务器端脚本的主流选择,至今仍在系统管理和生物信息学领域广泛使用。
语言特点
- 正则表达式王者:正则表达式是 Perl 的一等公民,语法最强大
- CPAN 生态:Comprehensive Perl Archive Network,超过 20 万个模块
- 灵活语法:"条条大路通罗马",多种写法实现同一功能
- 胶水语言:轻松连接不同系统和工具
- 文本处理:内置强大的字符串操作和报告生成能力
Hello World
perl
#!/usr/bin/perl
print "Hello, World!\n";基础语法
变量与数据类型
perl
# 标量($)
my $name = "Perl";
my $age = 37;
my $price = 99.99;
# 数组(@)
my @fruits = ("Apple", "Banana", "Cherry");
print $fruits[0]; # Apple
print $#fruits; # 最后一个索引
# 哈希(%)
my %person = (
name => "Alice",
age => 30,
);
print $person{name}; # Alice
# 引用(类似指针)
my $array_ref = \@fruits;
my $hash_ref = \%person;正则表达式
perl
# 匹配
if ($text =~ /hello/i) {
print "Found hello!";
}
# 替换
$text =~ s/old/new/g; # 全局替换
$text =~ s/\s+$//; # 去除尾部空白
# 捕获
if ($date =~ /(\d{4})-(\d{2})-(\d{2})/) {
my ($year, $month, $day) = ($1, $2, $3);
}
# 高级特性
$text =~ s/(\w+)/\u$1/g; # 首字母大写控制流
perl
# if-elsif-else
if ($age >= 18) {
print "成年人\n";
} elsif ($age >= 12) {
print "青少年\n";
} else {
print "儿童\n";
}
# 修饰符形式
print "成年人" if $age >= 18;
print "错误" unless $ok;
# for 循环
for my $i (0..9) {
print $i;
}
# foreach
foreach my $fruit (@fruits) {
print $fruit, "\n";
}
# while
while (<FILE>) { # 逐行读取
chomp;
print $_, "\n"; # $_ 是默认变量
}函数
perl
sub greet {
my ($name) = @_;
return "Hello, $name!";
}
print greet("Perl");
# 多返回值
sub swap {
my ($a, $b) = @_;
return ($b, $a);
}
my ($x, $y) = swap(1, 2);文件操作
perl
# 读取文件
open(my $fh, '<', 'input.txt') or die "无法打开: $!";
while (my $line = <$fh>) {
chomp $line;
print "$line\n";
}
close($fh);
# 写入文件
open(my $out, '>', 'output.txt') or die "无法打开: $!";
print $out "Hello, File!\n";
close($out);
# 一行读取整个文件
my $content = do { local $/; <$fh> };应用领域
- 文本处理:正则表达式匹配、日志分析、数据清洗
- 系统管理:Unix/Linux 管理脚本和自动化
- 生物信息学:BLAST、BioPerl 基因组数据处理
- 网络编程:CGI 脚本、网络爬虫、Socket 编程
- 数据库管理:DBI 数据库接口层
- 测试自动化:自动化测试脚本
开发环境搭建
- 安装 Perl:大多数 Linux/Mac 系统已预装
- Windows:Strawberry Perl 或 ActivePerl
- 验证:
perl -v - 包管理器:CPAN (
cpan install Module::Name) 或 cpanminus - 编辑器:VS Code + Perl 扩展、Padre
学习路线
- 入门阶段:标量/数组/哈希 → 控制流 → 子程序 → 文件操作
- 进阶阶段:正则表达式 → 引用 → 模块 → 面向对象
- 实战阶段:文本处理 → 系统脚本 → 数据库操作 → Web CGI
- 高级阶段:Moo/Moose OOP → 异步编程 → CPAN 开发