gpt4 book ai didi

perl - 我应该在 perl 模块中使用 "use 5.12.0; use warnings;"吗?

转载 作者:行者123 更新时间:2023-12-04 18:10:08 26 4
gpt4 key购买 nike

我不确定如果启动 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;

或者如果这些 use ...根本不被考虑,因为 use ...继承自调用 perl 脚本。

问题可能归结为:指定那些 use ... 是否值得?在一个模块中,或者如果我在我的 perl 脚本中指定它们就足够了。

最佳答案

语用模块具有词法范围,而不是动态范围。

版本编译指示激活当前范围内的某些功能,具体取决于版本。它不会全局激活这些功能。这对于向后兼容很重要。

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

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

这与导入当前包(!= 范围)的正常导入不同。
warnings pragma 在当前范围内激活警告。

但是,每个文件都应该包含 use strict ,因为词法范围从不跨越文件。 Pragma 是不及物的:

下午:
say "Hi";
1;

主要.pl:
use 5.012;
require Foo;

失败。

因此,您将这些 pragma 放在哪里在很大程度上是无关紧要的。我建议将编译指示放在 package 之前。当文件中有多个命名空间时,例如
use 5.012; use warnings;

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

但把 package首先,如果它是文件中唯一的一个。
package Foo;
use 5.012; use warnings;
...;
1;

唯一重要的是你做 use他们 ;-)

关于perl - 我应该在 perl 模块中使用 "use 5.12.0; use warnings;"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15987376/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com