さよならActivePerl、こんにちはStrawberry Perl
最近のActivePerlはおかしい
- アカウント登録しないとdownloadできなくなった
- やたらActiveStateからメールが飛んでくる
- PPMがなくなってしまった
- コマンドライン実行で引数が渡せなくなった(一応解決したがインストールするたびにレジストリ設定しなおす必要あり)
トラブルシュートするために使っているんじゃないのに、もううんざり。
代替としてStrawberry Perl
試しにStrawberry Perlを入れてみた。
Strawberry Perlでは引数問題以外何も悩まなくて済むのでActivePerlはもう捨てることにした。 使うのが目的であって、トラブルシュートに時間をつぶしたいわけではない、誰も。 今までありがとうActivePerl。でも、何でこんなに使えなくなってしまったのか、残念。
コマンドライン実行で引数が渡せない問題の対処法
perl c:\tools\foover.pl 1 2 3
のようにscriptを絶対パスで指定する面倒な方法なら@ARGSが認識されるのに、
foover.pl 1 2 3
としても@ARGSで取得できるはずの"1 2 3"のパラメータが空っぽになる問題。これは悩んだ。同じWindows 10でも動くPCと動かないPCが出る。違いがよく分からない。結局、stackoverflowの以下など散在している情報を集めて解決策が見つかった。
How do I make my Perl scripts act like normal programs on Windows?
以下のレジストリをいじる。ActivePerlとStrawberry Perlでそれぞれ使っているやつが違うので適宜。
HKEY_CLASSES_ROOT\Perl_program_file\shell\Execute Perl Program\command HKEY_CLASSES_ROOT\pl_auto_file\shell\open\command HKEY_CURRENT_USER\Software\Classes\Applications\perl.exe\shell\open\command
これらの値が
"C:\Strawberry\perl\bin\perl.exe" "%1"
になっているのを
"C:\Strawberry\perl\bin\perl.exe" "%1" %*
とすれば良いと思われる。
(ActivePerlの場合はC:\Strawberry\perl\bin\perl.exe
→ C:\Perl64\bin\perl.exe
に置換、今更要らないが)
CPANからpackageをインストールする
例えばEXIF関連のpackageに何があるかCPANのサイトでEXIFでサーチしてみると、
Image::EXIF
などが見つかる。これをinstallする場合は以下のようにする。
コマンドプロンプトからCPANを起動し、installコマンドを実行すればよい。
c:\tmp> cpan cpan> install Image::EXIF