4

まだデバッグしようとしている Perl スクリプトがあり、その過程で、ActivePerl と Strawberry Perl で実行すると動作が異なることに気付きました。

これにより、Perl スクリプトが実行中のフレーバーを Perl スクリプトがどのように検出するのか疑問に思いました。

4

3 に答える 3

8

両方のperlがどのようにコンパイルされているかを調べることができます

perl -V

問題の原因となっている違いを見つけたら、Configパッケージを使用して特定の機能を検出できます。すべての設定を一覧表示するには:

perl -MConfig -MData::Dump -e "dd \%Config"
于 2011-03-10T09:01:45.377 に答える
3

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 でのみ導入されたため、非常に古いリリースでは動作しません。

于 2011-03-10T18:06:14.397 に答える