如何使用 Perl 模块中的常量?
如果我在 Perl 模块中定义一个常量,我如何在我的主程序中使用该常量? (或者我如何在主程序中调用该常量?)
If I define a constant in a Perl module, how do I use that constant in my main program? (Or how do I call that constant in the main program?)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
常量可以像其他包符号一样导出。 使用标准 Exporter 模块,您可以从 然后,
在客户端脚本(或其他模块)中,
您可以使用
%EXPORT_TAGS
哈希(请参阅导出器文档)来定义可以使用单个导入参数导出的常量组。更新:这里是一个示例,说明如果您有多个常量,如何使用
%EXPORT_TAGS
功能。然后你可以说
Constants can be exported just like other package symbols. Using the standard Exporter module, you can export constants from a package like this:
Then, in a client script (or other module)
You can use the
%EXPORT_TAGS
hash (see the Exporter documentation) to define groups of constants that can be exported with a single import argument.Update: Here's an example of how to use the
%EXPORT_TAGS
feature if you have multiple constants.Then you can say
常量只是具有空原型的子项,因此可以像任何其他子项一样导出它们。
Constants are just subs with empty prototype, so they can be exported like any other sub.
为了扩展之前的答案,由于常量实际上只是子项,因此您也可以直接调用它们:
To expand on the earlier answers, since constants are really just subs, you can also call them directly:
您可能需要考虑使用 Readonly 而不是常量。
You might want to consider using Readonly instead of constant.
为了增加技巧,由于常量只是一个子例程,您甚至可以将其作为类方法调用。
如果你有很多常量,这是一种很好的方法来获取偶尔的常量,而不必将它们全部导出。 但是,与
Foo::PI
或导出PI
不同,Perl 不会编译出Foo->PI
,因此您会产生方法的成本打电话(这可能并不重要)。To add to the bag of tricks, since a constant is just a subroutine you can even call it as a class method.
If you have lots of constants it's a nice way to get at the occasional one without having to export them all. However, unlike
Foo::PI
or exportingPI
, Perl will not compile outFoo->PI
so you incur the cost of a method call (which probably doesn't matter).