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

【分享本文】
Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

    前言

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

    安裝 Perl

    在 Windows 上安裝 Perl

    Windows 不會預裝 Perl,使用者需自行安裝。在 Windows 上有兩種 Perl 的實作品:

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

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

    如果要在 Windows 上使用 Perl,筆者傾向使用 ActivePerl,因 ActivePerl 預包好一些常用的 Perl 套件,省下重新編譯的工夫。

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

    在類 Unix 系統系統上安裝 Perl

    雖然在許多類 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/cwchen/.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 上安裝 C 和 C++ 編譯環境

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

    雖然 PPM 上有維護一個 MinGW 套件,但筆者通常不採用這個版本。筆者會另使用 MSYS2 所提供的 MinGW 和一些 C (或 C++) 函式庫。這是對應 Windows 設計上的一些議題所採取的動作,有關更多說明可見這裡

    在類 Unix 系統上安裝 C 和 C++ 編譯環境

    類 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 社群套件

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

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

    在 Windows 上安裝 Perl 套件

    筆者建議使用 ActivePerl,並採以下的策略:

    • 能用 ppm 裝的套件就用 ppm
    • 不能用 ppm 裝的套件才用 cpan
    • 需要安裝延伸套件時,才裝 MSYS2;再用 MSYS2 裝所需的函式庫

    這樣的順序,相對來說是最省事的。

    使用 ppm install 即可安裝 Perl 套件:

    $ ppm install Moo
    

    本例的 MooMoose 的輕量級替代品,算是補強 Perl 在物件導向方面的不足。不過,本系列文章不會對物件導向著墨太多,本例子僅是展示如何使用 ppm 安裝套件。

    CPAN 套件也是用 ppm 安裝:

    $ ppm install CPAN
    

    ActivePerl 版本的 cpan 在第一次啟動時,會一併安裝相關的軟體:

    $ cpan
    
    It looks like you don't have a C compiler and make utility installed.  Trying
    to install dmake and the MinGW gcc compiler using the Perl Package Manager.
    This may take a a few minutes...
    
    Downloading MinGW-4.6.3...done
    Downloading dmake-4.11.20080107...done
    Unpacking MinGW-4.6.3...done
    Unpacking dmake-4.11.20080107...done
    Generating HTML for MinGW-4.6.3...done
    Generating HTML for dmake-4.11.20080107...done
    Updating files in site area...done
    3697 files installed
    
    Please use the `dmake` program to run commands from a Makefile!
    
    Loading internal null logger. Install Log::Log4perl for logging messages
    
    cpan shell -- CPAN exploration and modules installation (v2.1101)
    Enter 'h' for help.
    
    cpan>
    

    之後就可以用 cpan 安裝 Perl 套件:

    $ cpan Moo
    

    在類 Unix 系統上安裝 Perl 套件

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

    $ plenv install-cpanm
    

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

    $ cpanm Moo
    

    支援 Perl 的編輯器

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

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

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

    【分享本文】
    Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email
    【追蹤新文章】
    Facebook Twitter Plurk