2

我有一个需要在 Win32 和 Linux 操作系统中运行的 perl 模块。该模块使用 Win32::Process::List 来避免在 Win32 下与第三方应用程序的并发问题,并且在 Linux 下运行时没有等效要求。

到目前为止,我已经设法拥有同一个模块的两个副本,并为 Linux 版本注释掉了特定于 Win32 的内容——我显然对这种容易出错的方法不满意。

很明显,win 特定的东西在 Linux 中不会“进行安装”。我在我的代码中尝试了一种更柔和的方法,require Win32::Process::List;而不是use Win32::Process::List;,前者具有传递的优势perl -c mymodule- 但在常规使用中仍然失败。

因此我的问题是:除了维护两个不同的代码库之外,是否有更强大的方法来处理这种情况?

4

1 回答 1

4

怎么样使用if module,它允许您use根据编译时条件访问模块。

use if $^O eq 'MSWin32', 'Win32::Process::List';

$^O内置变量给出了操作系统的名称,并且始终适用MSWin32于任何 Windows 系统。

于 2013-01-29T14:20:42.647 回答