Perl 完全指南 / 第 2 章:安装与环境配置
第 2 章:安装与环境配置
“磨刀不误砍柴工” — 中国谚语
工欲善其事,必先利其器。本章将指导你完成 Perl 环境的安装、配置以及开发工具的选择。
2.1 系统自带的 Perl
大多数 Unix/Linux/macOS 系统自带 Perl。检查一下:
which perl
perl -v
| 操作系统 | 默认 Perl | 版本 | 建议 |
|---|---|---|---|
| Ubuntu 24.04 | 系统自带 | 5.38 | 用 perlbrew 安装独立版本 |
| macOS 14 | 系统自带 | 5.34(Apple 提供) | 强烈建议用 perlbrew |
| CentOS 9 | 系统自带 | 5.32 | 用 perlbrew |
| Windows | 不自带 | - | Strawberry Perl 或 WSL |
| Arch Linux | 系统自带 | 5.40 | 可直接使用 |
注意:不建议直接使用系统自带的 Perl 来做开发。系统 Perl 可能被系统工具依赖,随意安装模块可能导致系统不稳定。推荐使用 perlbrew 安装独立的 Perl 版本。
2.2 使用 perlbrew 管理 Perl 版本
perlbrew 是 Perl 版本管理工具,类似 Python 的 pyenv 或 Node.js 的 nvm。
安装 perlbrew
# 一行命令安装
curl -L https://install.perlbrew.pl | bash
# 初始化
perlbrew init
# 将以下内容添加到 ~/.bashrc 或 ~/.zshrc
source ~/perl5/perlbrew/etc/bashrc
验证安装:
perlbrew version
安装 Perl
# 查看可用版本
perlbrew available | head -20
# 安装最新稳定版
perlbrew install perl-5.40.0
# 安装指定版本(带线程支持)
perlbrew install perl-5.38.2 --as perl538 -Dusethreads
# 查看已安装版本
perlbrew list
# 切换版本
perlbrew switch perl-5.40.0
# 临时使用某个版本
perlbrew use perl-5.38.2
perlbrew 常用命令
| 命令 | 说明 |
|---|---|
perlbrew install <version> | 安装指定版本 |
perlbrew switch <version> | 切换默认版本 |
perlbrew use <version> | 临时切换版本 |
perlbrew list | 列出已安装版本 |
perlbrew available | 列出可安装版本 |
perlbrew lib create <name> | 创建独立库(隔离项目) |
perlbrew off | 关闭 perlbrew,恢复系统 Perl |
perlbrew self-upgrade | 升级 perlbrew 自身 |
使用独立库隔离项目
# 为项目创建独立库
perlbrew lib create myproject
# 激活
perlbrew switch perl-5.40.0@myproject
# 在该环境下安装的模块只对 myproject 可用
cpanm Mojolicious
2.3 安装 cpanm — 现代化的 CPAN 客户端
cpanm(App::cpanminus)是一个轻量级、零配置的 CPAN 模块安装器。
安装 cpanm
# 方式 1:通过 perlbrew(推荐)
perlbrew install-cpanm
# 方式 2:直接下载
curl -L https://cpanmin.us | perl - App::cpanminus
# 方式 3:通过系统包管理器
sudo apt install cpanminus # Ubuntu/Debian
sudo dnf install perl-App-cpanminus # Fedora
brew install cpanminus # macOS
使用 cpanm
# 安装模块
cpanm Mojolicious
# 安装指定版本
cpanm Mojolicious@9.35
# 安装到本地目录(不需要 root)
cpanm -l ~/perl5 Mojolicious
# 从本地压缩包安装
cpanm ./MyModule-1.00.tar.gz
# 安装开发依赖
cpanm --installdeps .
# 卸载模块(注意:cpanm 不直接支持,使用 App::pmuninstall)
cpanm App::pmuninstall
pmuninstall Mojolicious
# 查看模块信息
cpanm --info Mojolicious
# 模拟安装(不实际安装)
cpanm -n --simulate Mojolicious
cpanm vs 传统 cpan 命令
| 特性 | cpanm | cpan |
|---|---|---|
| 交互配置 | 不需要 | 首次需要 |
| 依赖处理 | 自动 | 需要配置 |
| 输出信息 | 简洁 | 详细 |
| 速度 | 快 | 较慢 |
| 推荐度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
2.4 安装常用模块
安装好 cpanm 后,推荐先安装这些基础模块:
# 代码质量工具
cpanm Perl::Tidy Perl::Critic
# 常用工具模块
cpanm List::Util String::Util Path::Tiny
# JSON/YAML 处理
cpanm JSON::XS YAML::XS
# Web 开发
cpanm Mojolicious
# 测试增强
cpanm Test::More Test::Deep Test::Exception
# 错误处理
cpanm Try::Tiny autodie
# OOP 框架
cpanm Moo Moose
# 日志
cpanm Log::Log4perl
# 数据库
cpanm DBI DBD::SQLite
2.5 IDE 与编辑器配置
VS Code(推荐)
VS Code 是目前最流行的 Perl 开发环境:
- 安装 VS Code
- 安装扩展 Perl(by
bscan)或 Perl Navigator - 安装语言服务器:
cpanm Perl::LanguageServer
推荐的 VS Code 配置(.vscode/settings.json):
{
"perl.enable": true,
"perl.perlPath": "/home/user/perl5/perlbrew/perls/perl-5.40.0/bin/perl",
"perl.perltidyEnabled": true,
"perl.perlcriticEnabled": true,
"perl.perlcriticSeverity": 3,
"editor.formatOnSave": true,
"[perl]": {
"editor.tabSize": 4,
"editor.insertSpaces": true
}
}
推荐的 VS Code 扩展:
| 扩展 | 说明 |
|---|---|
| Perl (bscan) | 语法高亮、代码导航、自动补全 |
| Perl Debug Adapter | 调试支持 |
| Perl Toolbox | 代码片段 |
Vim / Neovim
" ~/.vimrc 中添加
filetype plugin indent on
syntax on
" 安装 vim-perl 插件
" 使用 vim-plug
Plug 'vim-perl/vim-perl', { 'for': 'perl', 'do': 'make clean carp dancer highlight-all-pragmas try-expand heredoc' }
" 代码折叠
let perl_fold = 1
let perl_fold_blocks = 1
Emacs
;; 使用 cperl-mode(比 perl-mode 更好)
(setq auto-mode-alist (append '(("\\.\\([pP][Llm]\\|al\\)\\'" . cperl-mode))
auto-mode-alist))
(setq cperl-indent-level 4)
(setq cperl-close-paren-offset -4)
JetBrains(IntelliJ IDEA)
- 安装 Perl5 插件(Camelcade 插件)
- 配置 Perl 解释器路径
- 支持调试、重构、代码导航
2.6 环境配置文件
.bashrc / .zshrc 配置
# perlbrew 初始化
source ~/perl5/perlbrew/etc/bashrc
# 设置 PERL5LIB(额外模块搜索路径)
export PERL5LIB="$HOME/perl5/lib/perl5:$PERL5LIB"
# 设置 PATH(确保使用 perlbrew 的 perl)
export PATH="$HOME/perl5/perlbrew/perls/perl-5.40.0/bin:$PATH"
# 设置 CPAN 镜像(国内用户推荐)
export PERL_CPANM_OPT="--mirror https://mirrors.aliyun.com/CPAN/ --mirror https://cpan.metacpan.org"
CPAN 配置文件
如果使用传统 cpan 命令,配置文件在 ~/.cpan/CPAN/MyConfig.pm:
$CPAN::Config = {
'urllist' => [
'https://mirrors.aliyun.com/CPAN/',
'https://cpan.metacpan.org/',
],
'build_requires_install_policy' => 'yes',
'halt_on_failure' => 1,
};
2.7 Carton — 项目依赖管理
Carton 类似 Python 的 requirements.txt 或 Node.js 的 package.json:
cpanm Carton
使用流程
# 初始化项目
mkdir my_project && cd my_project
# 创建 cpanfile(类似 requirements.txt)
cat > cpanfile << 'EOF'
requires 'Mojolicious', '>= 9.0';
requires 'JSON::XS';
requires 'DBI';
on 'test' => sub {
requires 'Test::More', '>= 0.96';
requires 'Test::Mojo';
};
EOF
# 安装依赖到本地
carton install
# 运行脚本时使用本地依赖
carton exec perl my_script.pl
# 查看已安装模块
carton tree
cpanfile 格式
# 基本依赖
requires 'Module::Name';
requires 'Module::Name', '>= 1.00';
requires 'Module::Name', '== 1.23';
# 建议模块(安装失败不报错)
recommends 'Optional::Module';
# 开发/测试阶段依赖
on 'develop' => sub {
requires 'Perl::Tidy';
requires 'Perl::Critic';
};
on 'test' => sub {
requires 'Test::More';
requires 'Test::Deep';
};
2.8 Windows 用户指南
Windows 上有两种主要的 Perl 发行版:
Strawberry Perl
- 包含编译器(gcc)和常用 C 库
- 可以编译 XS 模块
- 推荐给需要安装 CPAN 模块的用户
- 下载:https://strawberryperl.com/
ActivePerl
- 商业公司 ActiveState 维护
- 包管理器使用
ppm - 企业版需要付费
- 社区版功能有限
WSL(推荐方案)
Windows 用户最佳方案是使用 WSL2:
# 启用 WSL
wsl --install
# 在 WSL 中安装 Ubuntu,然后按照 Linux 的步骤安装
| 方案 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|
| WSL2 | 完整 Linux 体验 | 需要 Windows 10+ | ⭐⭐⭐⭐⭐ |
| Strawberry Perl | 原生 Windows | 部分模块有问题 | ⭐⭐⭐⭐ |
| ActivePerl | 企业支持 | 部分功能收费 | ⭐⭐⭐ |
| Docker | 完全隔离 | 性能稍差 | ⭐⭐⭐⭐ |
2.9 验证环境
创建一个测试脚本验证环境是否正确:
#!/usr/bin/env perl
# verify_env.pl - 验证 Perl 环境配置
use strict;
use warnings;
print "=" x 50, "\n";
print "Perl 环境检查报告\n";
print "=" x 50, "\n\n";
# Perl 版本
printf "Perl 版本: %s\n", $^V;
printf "Perl 路径: %s\n", $^X;
printf "操作系统: %s\n", $^O;
# 模块搜索路径
print "\n模块搜索路径 (@INC):\n";
for my $path (@INC) {
print " $path\n";
}
# 检查常用模块
print "\n模块检查:\n";
my @modules = qw(
strict warnings Carp File::Spec
JSON::XS Try::Tiny Moo
Mojolicious DBI Test::More
);
for my $mod (@modules) {
my $file = $mod;
$file =~ s{::}{/}g;
$file .= ".pm";
if (eval { require $file; 1 }) {
my $version = $mod->VERSION // 'unknown';
printf " ✅ %-20s %s\n", $mod, $version;
} else {
printf " ❌ %-20s (未安装)\n", $mod;
}
}
print "\n", "=" x 50, "\n";
print "环境检查完成!\n";
运行验证:
perl verify_env.pl
本章小结
| 要点 | 内容 |
|---|---|
| perlbrew | Perl 版本管理器,推荐所有用户使用 |
| cpanm | 轻量级 CPAN 客户端,推荐替代 cpan |
| Carton | 项目依赖管理,类似 requirements.txt |
| IDE 推荐 | VS Code + Perl 扩展(最佳体验) |
| Windows | 推荐 WSL2 或 Strawberry Perl |
| 环境隔离 | 使用 perlbrew lib 隔离不同项目 |
练习
- 安装 perlbrew 并安装 Perl 5.40(或最新版本)
- 使用 cpanm 安装
JSON::XS和Path::Tiny - 配置 VS Code 或你喜欢的编辑器,支持 Perl 语法高亮
- 运行本章的
verify_env.pl,确认环境正常 - 创建一个
cpanfile,声明对Mojolicious的依赖