我找到了 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/