2021年06月01日

今更だけど、ActivePerlからStrawberryPerlに乗り換えた話

結論から書くと私の場合
Windows 10+StrawberryPerlの導入が全盛期の頃のActivePerl並にあっさりと導入ができてしまった。
という話です。

トラブルが起きていないので特に役に立つ記事ではありません。ほとんど忘備録と日記です。
昔Strawberryに挑戦して失敗したという人がいればもう一度背中を押そうとも思って書いています。

今までの環境は2006年頃からWindows XP/10+ActivePerlという組み合わせで何度も乗り継いできました。
途中StrawberryPerlにも挑戦しましたがWindowsとの相性が悪くギブアップ。
具体的にはStrawberry Perlのセットアップをしてもそのままでは関連付けが失敗してまともに動かない。
モジュールなどがうまく読み込まれない。入っていない?コンパイルなにそれ?
パスの設定とレジストリレベルで関連付けする必要があるらしくとにかくややこしい。
単にセットアップに失敗しただけかもしれませんがとにかく素人には使えないというのがStrawberryPerlの印象でした。
そのため、不便もないしActivePerlでいいやという流れでした。
それに、当時はPerlの本を見てもActivePerlをすすめるものが大半でしたしね。

しかし、2021年5月にパソコンをM/B、CPU、SSDとアップグレードしました。
余談ですがSSDを奮発して、PCIe3.0 NVMe のCFD CSSD-M2B2TPG3VNFにしてみました。
SATAタイプのSSDからの乗り換えですが、それでも体感で分かるほど早くなりました。
Excelの立ち上がりが速い!十分早かったですがまだ早くなる余地があるものですね。

Perlの導入ですがActivePerlの公式サイトをチェックするとそもそも64bitしかダウンロードができない。
ユーザー登録?有料?無料?よくわからないがすぐに無料でダウンロードできるのは64bitのみ。
64bitにするとそこで提供されていないモジュールが使えなくなる可能性がある。
以前うっかり64bitにしてモジュールがなく困った経験あり。
仕方なく、PCに保存していたActivePerl-5.22.1.2201-MSWin32-x86-64int-299574.msiでインストール。
ppm search Crypt-SSLを試みるとモジュールが無い!これではhttpsアクセスができないではないか!
ということで色々調べるとどうもモジュールが縮小されているようでppmを利用してでは無理らしい。
コンパイルされたものをダウンロードして無理やり導入もありだろうけど面倒すぎる。
この調子だと他のモジュールだって無いかもしれない。

そこでさらなるトラブルを予感して諦めてStrawberryPerlを導入。
前回失敗したPerlの起動がまず正常にできてかなり安堵。
FTYPE SPerl="C:\strawberry\Perl\bin\perl.exe" "%1" %*
ASSOC .pl=SPerl
などしなければならないらしいが杞憂に終わる。
---hoge.pl---
use strict;
use warnings;
print scalar @ARGV;
---------------
>hoge.pl a b c d
>4
問題なく表示される。素晴らしい!
StrawberryPerlのインストーラーはここ11年の間に進歩したらしい。(というかそもそも記事も11年前と古い)。

何事もなくセットアップも終了。

モジュールについてもかなり多くが標準で入ってるっぽい。ActivePerlではモジュールを色々入れた気がするけど、例えば、Crypt-SSLとか入れなくても普通にhttpsアクセスができてしまった。

以下、StrawberryPerlを導入するに当たりやったこと(これをする前にVC++のランタイムは他にも入れた気がする)。
・Microsoft Visual C++ 2008 Redistributable Package (x64)_vcredist_x64.exe インストール
・ActivePerl-5.22.1.2201-MSWin32-x86-64int-299574.msi インストール
・Win32OpenSSL_Light-1_1_1k.exe インストール
・ActivePerl-5.22.1.2201-MSWin32-x86-64int-299574.msi アンインストール
strawberry-perl-5.28.2.1-32bit.msi インストール (SHA-1: ae677d0a60d714bf802688c503a2ee2326b2df04)

あとは、Perlを実行して落ちるたもののエラーを確認しながら足りないモジュールを追加。
管理者権限で
cpan
install Win32::Process::Info
install Win32::Sound
install Date::Calc
install Perl::Tidy
install Statistics::Lite
install Time::HiRes (これは不要だったかも)
を導入。特にモジュールが見つからないということもなく簡単に導入成功。
httpsも特に問題なく繋がりActivePerl時代に使っていたものは全てそのまま動いてしまった。

追記
微妙に問題なのが、
---test.bat---
hoge2.pl test
pause
---------------
これを実行中にtest.batを削除。ActivePerlの頃ならプログラムが停止すればそのまま画面に表示されていたはずだが、新しい環境だとバッチファイルのpauseで止まることなく、画面が消えていることが度々ありこれが問題。このあたりはこれから解決すべき課題かな。
posted by makewls_blog at 05:56| Comment(0) | 日記