Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何编写跨平台的perl代码_Perl_Cross Platform - Fatal编程技术网

如何编写跨平台的perl代码

如何编写跨平台的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

一个perl脚本,它将包括Windows和Linux的不同模块,为了使它跨平台,我想以某种方式实现它,就像在C++中一样:

#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
不存在。