[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 和一些常用的動態函式庫,每次需要某個套件時就從原始碼開始重新編譯。

    ActivePerl 預設不帶和編譯套件相關的軟體,但用自製的 PPM (Perl Package Manager) 管理 Perl 套件,且保留使用 CPAN 從原始碼重新下載 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