Perl模块在Linux和Win32下运行

时间:2013-01-29 14:12:37

标签: linux windows perl multiplatform

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

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

很明显,特定于win的东西不会在Linux中“make install”。我在我的代码中使用require Win32::Process::List;代替use Win32::Process::List;尝试了一种更柔和的方法,前者提供了传递perl -c mymodule的优势 - 但是仍然无法正常使用。

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

1 个答案:

答案 0 :(得分:5)

如何使用if module,它允许您根据编译时条件use模块。

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

$^O内置变量提供操作系统的名称,对于任何Windows系统始终为MSWin32