本文介绍了如果模块存在,我如何编写可选择使用模块的代码?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如果我想编写可以选择使用模块的代码,我该怎么做?例如,如果我想编写 warn
s 转储对象的代码,如果 Data::Dumper
可用,否则只是 warn
s,如何我可以吗?
If I want to write code that optionally uses a module how can I do it? For example, if I want to write code that warn
s Dumping an object if Data::Dumper
is available or otherwise just warn
s, how can I do that?
推荐答案
这是加载可选模块的有效习惯用法,
This is an effective idiom for loading an optional module,
use constant has_Module => defined eval { require Module };
这将需要模块(如果可用),并将状态存储在常量中.
This will require the module if available, and store the status in a constant.
你可以像这样使用,
use constant has_DataDumper => defined eval { require Data::Dumper };
warn "got object";
if ( has_DataDumper ) {
warn Data::Dumper::Dumper( $obj );
}
这篇关于如果模块存在,我如何编写可选择使用模块的代码?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!