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

KK9*_*K99 4 perl

我有多个Perl模块.包名似乎很大

每次我从这些模块访问功能,我需要提供这样的东西

&PackageName::Functionname()

是否有一个Perl中可用的快捷方式或别名,可以引用更大名称的包

谢谢

KARTHIK

Ala*_*avi 9

有了Package::Alias你可以别名长包名称,如Foo::Bar::Bazbaz:

use Package::Alias 'baz' => 'Foo::Bar::Baz';

baz::quux;  # Invokes Foo::Bar::Baz::quux;
Run Code Online (Sandbox Code Playgroud)


Dan*_*mer 5

你可以在没有&:

PackageName::Functionname();
Run Code Online (Sandbox Code Playgroud)

还有导出器机制将函数从模块导出到默认命名空间:

use PackageName 'Functionname';

Functionname();
Run Code Online (Sandbox Code Playgroud)

有关如何使用的进一步说明,use请参阅http://perldoc.perl.org/functions/use.html

如何在编写自己的模块时导出函数,请参阅http://perldoc.perl.org/Exporter.html

  • 你可以_and should_调用没有`&`的函数.函数调用的`&`前缀有非明显的副作用,通常不会是你想要的. (12认同)
  • 或者您可以指定默认导出的功能 (2认同)
  • @Karthik - 我敢打赌`PackageName :: Fucntion`是用*prototype*声明的,并且你的函数调用与那个原型不一致,这是一个编译时错误.使用`&`调用函数会禁用原型检查(这只是Dave Sherohman提到的非明显副作用之一). (2认同)