标签: linux windows perl module perl-module
我有一个需要在Windows和Linux上运行的Perl脚本。问题是我需要use一个仅适用于Windows的Perl模块。
use
我已尝试过以下内容,但它仍然包含WindowsStuff个软件包。
WindowsStuff
use strict; if ($^O eq 'MSWin32' ){ use My::WindowsStuff; } use File::Basename; use Getopt::Long; ... ...
答案 0 :(得分:12)
因为use在编译时生效,所以它并不尊重正在编译的代码的普通流控制。 特别是,在有条件的假分支内部使用会阻止它被处理。
你可以做什么?
a)require导入(运行时):
require
if( $^O eq 'MSWin32' ) { require My::WindowsStuff; My::WindowsStuff->import if My::WindowsStuff->can("import"); }
b)use if(编译时):
use if
use if $^O eq 'MSWin32', "My::WindowsStuff";