强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

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 命令

特性cpanmcpan
交互配置不需要首次需要
依赖处理自动需要配置
输出信息简洁详细
速度较慢
推荐度⭐⭐⭐⭐⭐⭐⭐⭐

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 开发环境:

  1. 安装 VS Code
  2. 安装扩展 Perl(by bscan)或 Perl Navigator
  3. 安装语言服务器:
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)

  1. 安装 Perl5 插件(Camelcade 插件)
  2. 配置 Perl 解释器路径
  3. 支持调试、重构、代码导航

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

本章小结

要点内容
perlbrewPerl 版本管理器,推荐所有用户使用
cpanm轻量级 CPAN 客户端,推荐替代 cpan
Carton项目依赖管理,类似 requirements.txt
IDE 推荐VS Code + Perl 扩展(最佳体验)
Windows推荐 WSL2 或 Strawberry Perl
环境隔离使用 perlbrew lib 隔离不同项目

练习

  1. 安装 perlbrew 并安装 Perl 5.40(或最新版本)
  2. 使用 cpanm 安装 JSON::XSPath::Tiny
  3. 配置 VS Code 或你喜欢的编辑器,支持 Perl 语法高亮
  4. 运行本章的 verify_env.pl,确认环境正常
  5. 创建一个 cpanfile,声明对 Mojolicious 的依赖

扩展阅读