1

我的 perl 脚本必须在 Windows 和 Linux 服务器上运行。当脚本运行时,我必须为特定的东西更新注册表。当我使用“使用 Win32::Registry”时,它在 Windows 上运行良好,但在 Linux 上,无论以下 if 语句如何,它都会出错。

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

在我看来,perl 在编译时加载“使用”,这一定是问题所在。我该怎么做才能让 Perl 在 Linux 上运行时不加载 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 回答