有条件地使用perl模块时出错

时间:2014-08-07 21:05:40

标签: perl

if (a == b)
{
    eval "require IO::Compress::Gzip qw(gzip)";
}

这是我根据条件包含gzip所做的,但在运行时它会给出如下错误

Can't locate object method "gzip" via package "IO::Handle" (perhaps you forgot to load "IO::Handle"?)

请帮忙吗?感谢。

1 个答案:

答案 0 :(得分:3)

要有条件地包含模块,请使用if pragma

use if ($x == $y), 'IO::Compress::Gzip' => qw(gzip);

请注意,CONDITION中的变量必须是包级别并在BEGIN块中初始化。

或者,您可以使用以下内容:

if ($x == $y) {
    require IO::Compress::Gzip;
    IO::Compress::Gzip->import('gzip');
}