Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl中是否有用于引用模块名的别名?_Perl - Fatal编程技术网

Perl中是否有用于引用模块名的别名?

Perl中是否有用于引用模块名的别名?,perl,Perl,我有多个Perl模块。包裹的名字似乎很大 每次我访问这些模块中的函数时,我都需要提供如下内容 &PackageName::Functionname() Perl中是否有一个快捷方式或别名可以引用具有更大名称的包 谢谢 Karthik您可以在不使用和的情况下调用该函数: PackageName::Functionname(); 还有导出器机制,它将函数从模块导出到默认命名空间: use PackageName 'Functionname'; Functionname(); 有关如何使用use

我有多个Perl模块。包裹的名字似乎很大

每次我访问这些模块中的函数时,我都需要提供如下内容

&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