最近在想有沒有辦法把 Perl 裝到隨身碟裡,這樣我隨時隨地都可以使用我自己的 Perl 小工具。研究了許久後發現有兩種辦法:
第一種方法可以參考這篇文章的做法。他的做法是下載 Perl 的 source code,然後自己 compile。方法很簡單:
1. 準備好 compiler,可以下載 MinGW (官網連結) 並安裝,MinGW 是 GNU 在 Windows 系統上的 compiler。
2. 準備好 Perl 的原始碼,這可以去 cpan (下載頁面) 抓。
3. 準備好 make 。可以使用 dmake。
都準備好就可以開始自己編譯囉。其實非常的無腦,就是到原始碼的資料夾下後,執行
dmake
dmake test
dmake install
跟 Perl 模組的 make 方法幾乎一樣。需要注意的是我有先把 MinGW 下 bin/ 裡面的 type.exe 拿掉,因為 type 這個指令在 Windows 的 command line 模式下是有意義的,若被覆蓋掉會有問題。編好的 Perl 就可以丟進隨身碟裡面囉。
第二種方法其實超級無腦又好用,就是先安裝 ActivatePerl,然後把安裝好的整個 Perl 資料夾丟進隨身碟,就可以用了。而且 ActivatePerl 有解決路徑的問題,執行 perl.exe 的時候他會自動設定 @INC 的值,所以不會發生找不到函式庫的慘狀。這兩種方法是我實際玩過可行的,其實根本不用自己編譯吧,我認為並沒有比 ActivatePerl 好。另外如果先用 ActivatePerl 的 PPM (Perl Packet Management) 把想要的模組安裝好,再放進隨身碟裡,就不用考慮模組安裝的問題囉。
雖然我方法都研究出來了,但是三心兩意的我又開始想跳槽到 Python 陣營....,這樣一直轉變好像不太好 = =。 雖說我已經試過 Perl 寫 Tkx,向 SQLite 溝通等一些基礎的功能,看來還是先玩一下 Python 再來決定到底要用哪個,畢竟 Google App Engine 也只能用 Python 啊 :P。

用 ActiveState 的 PDK 工具 PerlApp 也很好用。 我的做法是把有用到的模組都打包到執行檔裡。 那個執行檔會用 eval 的方式執行其他 .pl 檔案。 這樣就不必把整個 Perl 目錄考到隨身碟了。 而且也保留了隨時修改 .pl 檔的彈性。 我用到的模組及Perl核心全部打包成一個執行檔大約2MB多。
2MB!太厲害了!我超有興趣,有更詳細的可以透露嘛?:P
寫一段程式如下: ------------------------------------ use Win32; # ↑ 把一些常用的模組都加進來 require($ARGV[0]); ------------------------------------ 存成 PerlShell.pl 執行 PerlApp PerlShell.pl 產生 PerlShell.exe 只要一個執行檔 + .pl 檔,到沒裝 Perl 的電腦只需打 PerlShell your_script.pl 就能執行啦! 這是最簡範例, 我用 PDK8 + Perl5.8 包起來大約5百多K。隨著模組的增加,包出來的執行檔會越大。 當然你可以加些程式碼設計出自己所需的 PerlShell。