linux - Perl 模块在 Linux 和 Win32 下运行

标签 linux windows perl multiplatform

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

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

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

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

最佳答案

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

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

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

关于linux - Perl 模块在 Linux 和 Win32 下运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14584915/

相关文章:

linux - 对我的 Cron 工作感到困惑

linux - Bash 不删除前导空格

linux - Python远程编程/调试

windows - 获取变量输出后跟百分比符号批处理脚本

windows - 如何在 Windows 版 QuickTime 中进行高分辨率离屏渲染?

perl - 如何在 Perl 中异步运行系统命令?

xml - 如何替换 XML 属性名称值

linux - 为什么这个 shell 管道会退出?

linux - 运行 root 仅执行具有非 root id 的进程

c++ - 大文件 I/O 异步与多线程同步 I/O