也许这个答案很简单,但是以防万一:如果没有导出模块中的sub,我有什么方法可以使用它?
如果SomePackage
导出some_sub
:
use lib '/home/something';
use SomePackage qw( some_sub );
&some_sub(arg);
如果没有导出,有没有办法使用some_sub
?
答案 0 :(得分:4)
答案很简单。使用sub的包验证子名称:
use Some::Package ();
Some::Package::some_sub($arg);
答案 1 :(得分:0)
你当然可以,只需用他们的完全限定名称来呼叫他们。
Some::Module::function( $args, @here )
更大的问题是你是否应该。 Perl不会在语言级别强制执行可见性;留给程序员。如果模块具有不导出但不记录的功能,那么期望您不应该调用它。如果是内部实现,它可能会随时受到不稳定的更改,破坏依赖于能够调用它的代码。