以下Perl代码..
if ($^O eq "MSWin32") {
use Win32;
.. do windows specific stuff ..
}
Run Code Online (Sandbox Code Playgroud)
..在Windows下运行,但无法在所有其他平台下运行("无法在@INC中找到Win32.pm").如何在Windows下运行时指示Perl尝试导入Win32,并忽略所有其他平台下的import语句?
Eth*_*her 21
此代码适用于所有情况,并且还在编译时执行加载,因为您构建的其他模块可能依赖于它:
BEGIN {
if ($^O eq "MSWin32")
{
require Module;
Module->import(); # assuming you would not be passing arguments to "use Module"
}
}
Run Code Online (Sandbox Code Playgroud)
这是因为与perldoc -f使用中描述的use Module (qw(foo bar))相同.BEGIN { require Module; Module->import( qw(foo bar) ); }
(编辑,几年后......)
这甚至更好:
use if $^O eq "MSWin32", Module;
Run Code Online (Sandbox Code Playgroud)
yst*_*sth 11
作为序列的快捷方式:
BEGIN {
if ($^O eq "MSWin32")
{
require Win32;
Win32::->import(); # or ...->import( your-args ); if you passed import arguments to use Win32
}
}
Run Code Online (Sandbox Code Playgroud)
你可以使用if pragma:
use if $^O eq "MSWin32", "Win32"; # or ..."Win32", your-args;
Run Code Online (Sandbox Code Playgroud)