まだデバッグしようとしている Perl スクリプトがあり、その過程で、ActivePerl と Strawberry Perl で実行すると動作が異なることに気付きました。
これにより、Perl スクリプトが実行中のフレーバーを Perl スクリプトがどのように検出するのか疑問に思いました。
まだデバッグしようとしている Perl スクリプトがあり、その過程で、ActivePerl と Strawberry Perl で実行すると動作が異なることに気付きました。
これにより、Perl スクリプトが実行中のフレーバーを Perl スクリプトがどのように検出するのか疑問に思いました。
両方のperlがどのようにコンパイルされているかを調べることができます
perl -V
問題の原因となっている違いを見つけたら、Configパッケージを使用して特定の機能を検出できます。すべての設定を一覧表示するには:
perl -MConfig -MData::Dump -e "dd \%Config"
Windows 上の ActivePerl は常に (または少なくとも Perl 5.005 以降)Win32::BuildNumber()
関数を定義するため、実行時にチェックできます。
if (defined &Win32::BuildNumber) {
say "This is ActivePerl";
}
else {
say "This is NOT ActivePerl";
}
他のプラットフォームでも ActivePerl を確認したい場合は、ActivePerl::BUILD()
代わりに関数を使用する必要があります。ActivePerl 5.8.7 ビルド 814 でのみ導入されたため、非常に古いリリースでは動作しません。