使用Win32 :: Registry会给Linux机器带来问题

Tin*_*asm 1 linux windows registry perl

我的perl脚本必须在Windows和Linux服务器上运行.在脚本运行时,我必须更新注册表以获取特定内容.当我使用"使用Win32 :: Registry"它在Windows上工作正常,但在Linux上,无论以下if语句如何都会出错.

if ($OS =~ /Windows/ )
{
use Win32::Registry;
...
...
}
Run Code Online (Sandbox Code Playgroud)

在我看来,perl在编译时加载"use",这一定是问题所在.在Linux上运行时,我可以做什么使Perl不加载使用win 32命令?

我试过用

if ($OS =~ /Windows/ )
{
require Win32::Registry;
...
...
} 
Run Code Online (Sandbox Code Playgroud)

有了这个,脚本在两台服务器上运行良好,但它在注册表中保存二进制值而不是字符串值.

那么如何在两台服务器上运行Perl脚本并在注册表中保存字符串值?

谢谢.

ike*_*ami 6

use Foo;
Run Code Online (Sandbox Code Playgroud)

BEGIN {
   require Foo;
   import Foo;
}
Run Code Online (Sandbox Code Playgroud)

所以用

BEGIN {
   if ($OS =~ /Windows/)
      require Win32::Registry;
      import Win32::Registry;
   }
}
Run Code Online (Sandbox Code Playgroud)

要么

use if $OS =~ /Windows/, 'Win32::Registry';
Run Code Online (Sandbox Code Playgroud)