【发布时间】:2011-09-12 13:42:23
【问题描述】:
一个包含适用于 Windows 和 Linux 的不同模块的 perl 脚本,为了使其跨平台,我想以某种方式实现它,就像在 C++ 中一样:
#if _WIN32
//...
#else
//...
#endif
【问题讨论】:
-
@Alex 我不认为它有效:使用 Win32::Console::ANSI if($^O eq 'MSWin32');
-
通过
use加载模块是在编译时完成的。但是,您可以使用 Module::Load (search.cpan.org/~bingos/Module-Load-0.20/lib/Module/Load.pm),然后按照if($^O eq 'MSWin32'){load 'Win32::Console::ANSI'}else{#do something else...or not...whatever}的方式说一些话 -
请注意:记得使用File::Spec catfile() 和 catdir() 以可移植的方式构建文件路径和路径。
-
@Marco De Lellis,我更喜欢Path::Class。它是 File::Spec 的包装器,解决了 File::Spec 的一些问题。请注意,Windows 确实支持“/”作为目录分隔符(本机!),因此通常可以不使用 File::Spec 或 Path::Class。
标签: perl cross-platform