位元詩人 [Perl] 程式設計教學:建置開發環境

Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

前言

本文說明如何在系統上建置 Perl 環境。Windows 上不會預裝 Perl,故需另行安裝。Unix 上通常會預裝 Perl,但我們仍然可以視需求重新安裝另一個版本的 Perl。

安裝 Perl

Windows

Windows 不會預裝 Perl,使用者需自行安裝。

目前建議安裝 Strawberry Perl。原本的 ActivePerl 未繼續更新。新版本的 ActivePerl 需要登入 ActiveState Platform 才能下載安裝 (出處)。

兩者主要的差別在於對套件的處理方式不同。Strawberry Perl 採用 Unix 的思維,預先包含 GCC 和一些常用的動態函式庫,每次需要某個 Perl 套件時就從原始碼開始從頭編譯。

相對來說,ActivePerl 預設不帶和編譯套件相關的軟體,但用自製的 PPM (Perl Package Manager) 管理 Perl 套件,且保留使用 CPAN 從原始碼重新下載 Perl 套件的彈性。

如果要在 Windows 上使用 Perl,筆者傾向使用 ActivePerl,因 ActivePerl 預包好一些常用的 Perl 套件,省下重新編譯的工夫。現在取得 ActivePerl 比先前困難,建議使用 Strawberry Perl。

使用 Chocolatey 安裝 Strawberry Perl:

> choco install strawberryperl

至於 DWIM Perl 是 Strawberry Perl + Padre (Perl IDE) + 常用 Perl 套件的集合,對於習慣 IDE 的程式人比較方便。但 DWIM Perl 已經多年未更新,若在意 Perl 的版本則不建議使用。

Unix

雖然在許多 Unix 都會預裝 Perl,但筆者會建議用 plenv 在家目錄下安裝自已所需的版本。比起用系統提供的套件,使用 plenv 可以安裝最新版本的 Perl,在安裝 Perl 套件時也不會影響到系統的檔案。

用 Git 即可安裝 plenv

$ git clone https://github.com/tokuhirom/plenv.git ~/.plenv

$HOME/.plenv/bin 加入 PATH 變數。參考以下指令:

$ echo 'export PATH="$HOME/.plenv/bin:$PATH"' >> ~/.bash_profile

可參考以下 shell 程式碼將 plenv 初始化:

# Init plenv
if which plenv > /dev/null;
then
    eval "$(plenv init -)"
fi

建議也一併安裝 perl-build,之後可將安裝流程自動化:

$ git clone https://github.com/tokuhirom/Perl-Build.git ~/.plenv/plugins/perl-build/

使用符合 ANSI C 標準的 C 編譯器即可編譯 Perl 原始碼,Perl 原始碼中似乎沒有提到 Perl 額外相依什麼函式庫。在 Unix 上大部分是使用 GCC。

編譯及安裝的指令如下:

$ plenv install 5.26.2

編譯會稍微花一點點時間,在筆者的電腦上,大約是數分鐘左右。

使用 plenv versions 可檢查 plenv 中安裝的 Perl 版本:

$ plenv versions
* system (set by /home/user/.plenv/version)
  5.26.2

使用 plenv global 可指定終端機下使用的 Perl 版本:

$ plenv global 5.26.2

如果某個專案需要指定 Perl 版本,可用 plenv local 來指定,在該資料夾會額外出現 .perl-version 設定檔。

由於 plenv local 的優先等級會比 plenv global 來得高,這時候該專案的 Perl 版本就會固定下來,不會受到 plenv global 的影響。參考指令如下:

$ plenv local 5.26.2

如果要移除專案中的 plenv local 設定,可參考以下指令:

$ plenv local --unset

安裝 C 和 C++ 編譯環境

有許多 Perl 延伸模組內部實際上用 C (少數用 C++) 實作,再加上 Perl 連結 (binding),如果要編譯這些延伸套件,就要安裝 C 和 C++ 編譯環境。本節針對不同平台來討論。

Windows

Windows 平台沒有預裝的 C (或 C++) 編譯器,造成每個高階語言的社群都要自已想辦法,一般都是採用 Visual C++ 或 MinGW (註) 兩者之一。Perl 社群採用後者。

註:GCC 在 Windows 上的移植品

雖然 PPM 上有維護一個 MinGW 套件,但筆者通常不採用這個版本。雖然 Strawberry Perl 會附帶 GCC 和一些常見函式庫,建議使用 MSYS2 所提供的 MinGW 和一些 C 函式庫。這是對應 Windows 設計上的一些議題所採取的動作。

想了解 MSYS2 可參考這篇文章

Unix

類 Unix 系統上通常都會有 GCC (或 Clang)。若沒有,安裝也相當簡單。

在 Debian/Ubuntu/Linux Mint 上安裝 GCC 及相關開發工具的指令如下:

$ sudo apt-get install build-essential

在 Red Hat/CentOS/Fedora 上安裝 GCC 及相關開發工具的指令如下:

$ sudo yum groupinstall "Development Tools"

在 macOS 上,則裝 Command Line Tools for Xcode 即可。

安裝 Perl 社群套件 (Module)

除了內建的套件,Perl 有著豐富的社群套件,這些社群套件大大地延展了 Perl 的功能。

原本 Perl 社群用 cpan 來安裝 Perl 套件,但 cpan 在初次使用的設定較為繁複,後來出現 cpanm,這是一套新的 Perl 套件管理軟體,基本上可以取代原本的 cpan至於先前提到的 PPM 是 ActiveState 自行開發和維護的,不是原本 Perl 社群的套件管理軟體。

Windows

Strawberry 按照 Unix 社群的慣例,安裝套件時會從頭開始編譯。所以需要安裝 MSYS2 來提供 C 編譯器及相依的 C 函式庫。

使用 cpan 來安裝 Perl 套件。像是以下例子:

> cpan Moo

Unix

如果讀者有使用 plenv 管理 Perl 版本的話,只要一行指令就可以安裝 cpanm

$ plenv install-cpanm

接著,就可以用 cpanm 安裝其他 Perl 套件:

$ cpanm Moo

支援 Perl 的編輯器 (Editor)

由於我們使用 Perl 的目標是撰寫小型命令稿,而不是開發中大型應用程式,不需要用到 IDE 這類龐大的軟體,使用編輯器 (editor) 就可以了。以下是一些常見的選項:

  • Atom
  • Sublime Text
  • VSCode (Visual Studio Code)
  • Nodepad++ (Windows 限定)
  • Vim (較難上手)
  • Emacs (較難上手)

筆者目前使用 VSCode 為主,因為 VSCode 跨平台,減少重覆學習編輯器的時間,又有豐富的外掛。讀者可選用自己喜歡的編輯器。

檢查 Perl 的版本號 (Version)

使用 perl --version 指令即可檢查系統上的 Perl 的版本號。像是以下實例:

$ perl --version

This is perl 5, version 38, subversion 2 (v5.38.2) built for darwin-thread-multi-2level

Copyright 1987-2023, Larry Wall

(省略一些文字)
關於作者

身為資訊領域碩士,位元詩人 (ByteBard) 認為開發應用程式的目的是為社會帶來價值。如果在這個過程中該軟體能成為永續經營的項目,那就是開發者和使用者雙贏的局面。

位元詩人喜歡用開源技術來解決各式各樣的問題,但必要時對專有技術也不排斥。閒暇之餘,位元詩人將所學寫成文章,放在這個網站上和大家分享。