Perl - 我可以使用未导出的模块中的subs

时间:2014-05-08 05:49:13

标签: perl

也许这个答案很简单,但是以防万一:如果没有导出模块中的sub,我有什么方法可以使用它?

如果SomePackage导出some_sub

,则以下代码可以使用
use lib '/home/something';
use SomePackage qw( some_sub );

&some_sub(arg);

如果没有导出,有没有办法使用some_sub

2 个答案:

答案 0 :(得分:4)

答案很简单。使用sub的包验证子名称:

use Some::Package ();

Some::Package::some_sub($arg);

答案 1 :(得分:0)

当然可以,只需用他们的完全限定名称来呼叫他们。

Some::Module::function( $args, @here )

更大的问题是你是否应该。 Perl不会在语言级别强制执行可见性;留给程序员。如果模块具有不导出但不记录的功能,那么期望您不应该调用它。如果是内部实现,它可能会随时受到不稳定的更改,破坏依赖于能够调用它的代码。