1

私の perl スクリプトは、Linux サーバーだけでなく Windows でも実行する必要があります。スクリプトが実行されると、特定のものについてレジストリを更新する必要があります。「use Win32::Registry」を使用すると、Windows では正常に動作しますが、Linux では次の if ステートメントに関係なくエラーが発生します。

if ($OS =~ /Windows/ )
{
use Win32::Registry;
...
...
}

私の見解では、perl はコンパイル時に "use" をロードしますが、これが問題に違いありません。Linux での実行時に Perl が use win 32 コマンドをロードしないようにするにはどうすればよいですか?

使ってみた

if ($OS =~ /Windows/ )
{
require Win32::Registry;
...
...
} 

これにより、スクリプトは両方のサーバーで正常に実行されますが、文字列値ではなくバイナリ値がレジストリに保存されます。

では、Perl スクリプトを両方のサーバーで実行し、文字列値をレジストリに保存するにはどうすればよいでしょうか?

ありがとうございました。

4

1 に答える 1

6
use Foo;

BEGIN {
   require Foo;
   import Foo;
}

だから使う

BEGIN {
   if ($OS =~ /Windows/)
      require Win32::Registry;
      import Win32::Registry;
   }
}

また

use if $OS =~ /Windows/, 'Win32::Registry';
于 2012-09-21T17:24:26.103 に答える