[英]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.