Skip to content

🐫 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 数据库接口层
  • 测试自动化:自动化测试脚本

开发环境搭建

  1. 安装 Perl:大多数 Linux/Mac 系统已预装
  2. Windows:Strawberry Perl 或 ActivePerl
  3. 验证:perl -v
  4. 包管理器:CPAN (cpan install Module::Name) 或 cpanminus
  5. 编辑器:VS Code + Perl 扩展、Padre

学习路线

  1. 入门阶段:标量/数组/哈希 → 控制流 → 子程序 → 文件操作
  2. 进阶阶段:正则表达式 → 引用 → 模块 → 面向对象
  3. 实战阶段:文本处理 → 系统脚本 → 数据库操作 → Web CGI
  4. 高级阶段:Moo/Moose OOP → 异步编程 → CPAN 开发

返回首页 | 查看所有语言

编程语言技术文档