gpt4 book ai didi

perl - 如果已安装,我如何需要可选的 Perl 模块?

转载 作者:行者123 更新时间:2023-12-03 01:44:45 25 4
gpt4 key购买 nike

我有 Perl 代码,它依赖于 Term::ReadKey 来获取终端宽度。我的安装缺少此模块,因此我想在该模块不存在时提供默认值,而不是抛出异常。

如何有条件地使用可选模块,而不提前知道它是否可用。

# but only if the module is installed and exists
use Term::ReadKey;
...

我怎样才能做到这一点?

最佳答案

这是一个不需要其他模块的简单解决方案:

my $rc = eval
{
require Term::ReadKey;
Term::ReadKey->import();
1;
};

if($rc)
{
# Term::ReadKey loaded and imported successfully
...
}

请注意,下面所有使用 eval { use SomeModule } 的答案(我希望它们低于这个!:-)都是错误的,因为 use 语句被评估在编译时,无论它们出现在代码中的哪个位置。因此,如果 SomeModule 不可用,脚本将在编译后立即终止。

(use 语句的字符串 eval 也可以工作(eval 'use SomeModule';),但是当require/import 对执行相同的操作,并在编译时进行语法检查以启动。)

最后,请注意,为了本示例的目的,我在这里使用 eval { ... }$@ 是为了简洁。在实际代码中,您应该使用类似 Try::Tiny 的内容。 ,或至少be aware of the issues it addresses .

关于perl - 如果已安装,我如何需要可选的 Perl 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/251694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com