簡體   English   中英

我應該使用“使用5.12.0; 使用警告;“在perl模塊中?

[英]Should I use “use 5.12.0; use warnings;” in a perl module?

如果啟動一個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腳本中指定它們就足夠了。

實用模塊具有詞匯,而非動態范圍。

版本pragma會激活當前作用域中的某些功能,具體取決於版本。 它不會全局激活這些功能。 這對於向后兼容性很重要。

這意味着可以在模塊定義之外激活pragma,但在我們的范圍內:

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

這與導入當前包(!=范圍)的普通導入不同。

warnings pragma激活當前范圍內的警告。

但是,每個文件都應該包含use strict ,因為詞法范圍從不延伸到文件。 語用庫不是傳遞性的:

Foo.pm:

say "Hi";
1;

main.pl:

use 5.012;
require Foo;

失敗。


因此,你確切地說這些pragma在很大程度上是無關緊要的。 當文件中有多個名稱空間時,我建議將pragma放在package之前,例如

use 5.012; use warnings;

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

但如果它是文件中唯一的一個,則首先放入package

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

唯一重要的是你確實use它們;-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM