如何编写跨平台的perl代码
一个perl脚本,它将包括Windows和Linux的不同模块,为了使它跨平台,我想以某种方式实现它,就像在C++中一样:如何编写跨平台的perl代码,perl,cross-platform,Perl,Cross Platform,一个perl脚本,它将包括Windows和Linux的不同模块,为了使它跨平台,我想以某种方式实现它,就像在C++中一样: #if _WIN32 //... #else //... #endif ,: 或者 use Win32::Console::ANSI (); 相当于 BEGIN { require Win32::Console::ANSI; } 所以你也可以用 BEGIN { require Win32::Console::ANSI if $^O e
#if _WIN32
//...
#else
//...
#endif
,:
或者
use Win32::Console::ANSI ();
相当于
BEGIN {
require Win32::Console::ANSI;
}
所以你也可以用
BEGIN {
require Win32::Console::ANSI
if $^O eq 'MSWin32';
}
,:
或者
use Win32::Console::ANSI ();
相当于
BEGIN {
require Win32::Console::ANSI;
}
所以你也可以用
BEGIN {
require Win32::Console::ANSI
if $^O eq 'MSWin32';
}
请参阅@Alex我看它不起作用:使用Win32::Console::ANSI if($^O eq'MSWin32');通过
use
加载模块是在编译时完成的。但是,您可以使用Module::Load(),并按照以下方式说一些话:if($^O eq'MSWin32'){Load'Win32::Console::ANSI'}或者{#做点别的……或者不做……随便什么}
注意:记住使用catfile()和catdir()以可移植的方式构建文件路径。@Marco De Lellis,我更喜欢。它是一个围绕File::Spec的包装器,解决了File::Spec的一些问题。请注意,Windows确实支持“/”作为目录分隔符(本机!),因此通常不用File::Spec或Path::Class就可以离开。请参阅@Alex我看它不起作用:使用Win32::Console::ANSI if($^O eq'MSWin32');通过use
加载模块是在编译时完成的。但是,您可以使用Module::Load(),并按照以下方式说一些话:if($^O eq'MSWin32'){Load'Win32::Console::ANSI'}或者{#做点别的……或者不做……随便什么}
注意:记住使用catfile()和catdir()以可移植的方式构建文件路径。@Marco De Lellis,我更喜欢。它是一个围绕File::Spec的包装器,解决了File::Spec的一些问题。请注意,Windows确实支持“/”作为目录分隔符(本机!),因此通常不使用File::Spec或Path::Class就可以离开。无法使$^O
链接正常工作。它是http://perldoc.perl.org/perlvar.html#$^O(减去空格),我可以::-)尝试链接到名称。@DVK,使用Win32::Console::ANSI()
始终等同于开始{require Win32::Console::ANSI;}
。即使它确实存在,它也不会调用import
。@DVK,如果我说使用Win32::Console::ANSI,那就不同了代码>。顺便说一下,Module->import
即使不存在import
,也不会抛出错误。无法使$^O
链接正常工作。它是http://perldoc.perl.org/perlvar.html#$^O(减去空格),我可以::-)尝试链接到名称。@DVK,使用Win32::Console::ANSI()
始终等同于开始{require Win32::Console::ANSI;}
。即使它确实存在,它也不会调用import
。@DVK,如果我说使用Win32::Console::ANSI,那就不同了代码>。顺便说一下,Module->import
不会抛出错误,即使import
不存在。