Perl模块在Linux和Win32下运行

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

到目前为止,我已经devise了两个相同模块的副本,特别是针对Linux版本的Win32特定的东西 – 我明显不满意这个容易出错的方法。

很明显,特定于游戏的东西不会在Linux中“安装”。 我已经试过在我的代码中require Win32::Process::List;更柔和的方法require Win32::Process::List; 而不是use Win32::Process::List; ,前者给予了传递perl -c mymodule的好处 – 但是仍然不能正常使用。

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

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

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

$^O内置变量给出了操作系统的名称,对于任何Windows系统,总是MSWin32