gpt4 book ai didi

perl - 如何检查perl模块是否可用?

转载 作者:行者123 更新时间:2023-12-02 08:25:30 24 4
gpt4 key购买 nike

我找到了 this :

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

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

但这不适用于在其他模块中定义的包,例如:

{
package Hi::Test;
}

my $rc = eval{ require Hi::Test };

$rc 在这里是假的。

如何检查“Hi::Test”是否可用?

最佳答案

我假设该包中确实发生了一些事情,而不仅仅是一个空 block 。

以下代码检查该包的符号表中是否有任何条目。它很脏,但只要注册了 sub 或包变量,它就可以工作。

{
package Hi::Test;

sub foo;
}

my $rc = eval{ require Hi::Test };
if (! $rc) {
$rc = do {
no strict;
*stash = *{"Hi::Test::"};
scalar keys %stash;
}
}

print $rc;

它将打印1

关于perl - 如何检查perl模块是否可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32608504/

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