加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

我应该使用“使用5.12.0;使用警告;“在perl模块中?

发布时间:2020-12-16 06:28:00 所属栏目:大数据 来源:网络整理
导读:如果启动一个perl模块,我不确定它是否以及它有什么不同 package MYPACKAGE;use 5.12.0;use warnings;# functions are here1; 要么 use 5.12.0;use warnings;package MYPACKAGE;# functions are here1; 或者如果这些使用……根本不被认为是因为使用…继承自调
如果启动一个perl模块,我不确定它是否以及它有什么不同

package MYPACKAGE;
use 5.12.0;
use warnings;

# functions are here

1;

要么

use 5.12.0;
use warnings;
package MYPACKAGE;

#  functions are here

1;

或者如果这些使用……根本不被认为是因为使用…继承自调用perl脚本.

问题可能归结为:是否值得在模块中指定那些使用…或者如果我在perl脚本中指定它们就足够了.

解决方法

实用模块具有词汇,而非动态范围.

版本pragma会激活当前作用域中的某些功能,具体取决于版本.它不会全局激活这些功能.这对于向后兼容性很重要.

这意味着可以在模块定义之外激活pragma,但在我们的范围内:

# this is package main
use 5.012; # activates `say`
package Foo;
say "Hi"; # works,because lexical scope

这与导入当前包(!=范围)的普通导入不同.

警告pragma激活当前范围内的警告.

但是,每个文件都应包含use strict,因为词法范围从不延伸到文件.语用库不是传递性的:

Foo.pm:

say "Hi";
1;

main.pl:

use 5.012;
require Foo;

失败.

因此,你确切地说这些pragma在很大程度上是无关紧要的.我建议在文件中有多个名称空间时将pragma放在包之前,例如

use 5.012; use warnings;

package Foo;
...;
package Bar;
...;
1;

但如果它是文件中唯一的一个,则首先放入包.

package Foo;
use 5.012; use warnings;
...;
1;

唯一重要的是你确实使用它们;-)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读