UIをWin32用の実行形式に

UI(webclient.pl)を使うのにActivePerlが必要なことを散々叩かれたので、まずはそこから。
解決策としては、

  1. DやC++なんかで作り直す
  2. PerlをWin32環境で実行できるようにコンパイルする

がある。
後者は、既に一度perlccでのコンパイルを試みていて、実行ファイルは作れるが実行時エラーで動かないことが分かっている。
(なぜ動かないかは不明。深入りせず)
前者は、最終手段。一度Dで作り直すことを考えたが、どう考えても俺的には、現状(ActivePerl)よりよくない結果になる。

@ PARが最高
昼からずーと、Perlのコンパイルについて調べていると、PARというPerl版JARのようなものがあるとの情報を入手。
んで、試してみたところ、全てうまくいった。

PARの内容については以下のサイトが分かりやすい。
[PAR] perlをexe化 :: ぼくはまちちゃん!

@ 個人的メモ

  • スクリプトファイルにBOMがあると実行時エラーになる

BOMなしで保存することで解決。

  • 実行ファイルがでかい

webclient.plでは、実行ファイルサイズが約2MBほどになった。
pp(PARのプログラム)によって、作成された実行ファイルは、起動時に破損チェックが行われるため、これ自体はUPXできない。
圧縮する場合は、Perl/bin配下のperl58.dllあたりをUPXした後にppすると、作成される実行ファイルが少し小さくなる。
webclient.plの場合は、 2,249,682 -> 1,787,766。

あまり変わらない。