Perl中是否有用于引用模块名的别名?
我有多个Perl模块。包裹的名字似乎很大 每次我访问这些模块中的函数时,我都需要提供如下内容Perl中是否有用于引用模块名的别名?,perl,Perl,我有多个Perl模块。包裹的名字似乎很大 每次我访问这些模块中的函数时,我都需要提供如下内容 &PackageName::Functionname() Perl中是否有一个快捷方式或别名可以引用具有更大名称的包 谢谢 Karthik您可以在不使用和的情况下调用该函数: PackageName::Functionname(); 还有导出器机制,它将函数从模块导出到默认命名空间: use PackageName 'Functionname'; Functionname(); 有关如何使用use
&PackageName::Functionname()
Perl中是否有一个快捷方式或别名可以引用具有更大名称的包
谢谢
Karthik您可以在不使用
和的情况下调用该函数:
PackageName::Functionname();
还有导出器机制,它将函数从模块导出到默认命名空间:
use PackageName 'Functionname';
Functionname();
有关如何使用use
的进一步说明,请参阅
如何在编写自己的模块时导出函数,请参见,您可以将长程序包名称(如Foo::Bar::Baz
)别名为Baz
:
use Package::Alias 'baz' => 'Foo::Bar::Baz';
baz::quux; # Invokes Foo::Bar::Baz::quux;
或者,您可以指定默认情况下要导出的函数。您可以并且应该在不使用和的情况下调用该函数。函数调用的&
前缀具有不明显的副作用,通常不会达到您想要的效果。如果我调用像这样的PackageName::function(“param1”、“Param2”)
我会得到一个编译错误。如果我调用&PackageName::function(“param1”、“Param2”)
工作得很好。我做错了什么?@Karthik-我敢打赌PackageName::function
是用原型声明的,并且您的函数调用与原型不一致,这是一个编译时错误。用&
调用函数会禁用原型检查(这只是Dave Sherohman提到的不明显的副作用之一)。不是的,原型没有。只是在读关于原型的书。谢谢你的信息。很遗憾,我不能使用package::alias,因为我将使用RATLPERL