当谈到我们脚本需要什么版本的Perl时,我们有选择,哦,兄弟,我们有选择:
use 5.010;
use 5.010_001;
use 5.10.0;
use v5.10;
use v5.10.0;
Run Code Online (Sandbox Code Playgroud)
一切似乎都有效.perlcritic抱怨除了前两个之外的所有人.(不幸的是,v字符串似乎有这样的缺陷,因为Perl 6希望你use v6;为你的Perl 6脚本做...)
那么,我们应该做些什么来表明我们想要使用特定版本的perl?
实际上只有两个选项:十进制数和v字符串.使用哪种表单部分取决于您希望通过有意义的错误消息"支持"而不是语法错误的Perl版本.(在Perl 5.6中添加了v-string语法.)公认的最佳实践 - perlcritic强制执行 - 是使用十进制表示法.您应该指定脚本正常运行所需的最低Perl版本.通常,这意味着声明对主要版本中添加的语言功能的依赖性,例如使用say5.10中添加的功能.如果脚本正常运行很重要,则应包括修补程序级别.例如,我的一些代码指定,use 5.008001因为它取决于修复5.8.0中已修复的5.8.0的错误.
我只是喜欢用的东西5.010_001.我已经厌倦了处理版本字符串问题,因为这些问题应该让人感到非常简单.
由于我主要处理构建系统,因此我Module::Build内部的持续斗争version.pm与version.pmCPAN 不同步.我认为现在大多好了,但我有更好的想法.
最好的做法应该始终是做最少关注的事情,当然不会比它给出的价值更多的关注.在我看来,V字符串和点分十进制是一个巨大的分心,没有额外的好处,浪费了很多有价值的程序员时间只是为了回到起点.
我还应该注意到,Perl :: Critic经常推出可疑的做法,以达到减少人们做事方式的更高目的.但是,这些做法经常会导致问题,使它们变得不那么好.这是其中一个案例.更现实的最佳做法是不要让Perl :: Critic合规成为您的目标.在有用的地方使用它,但在这种情况下,不要浪费精力时间.
"现代"的方式是使用以...开头的表格v.但是,这可能不一定是你真正想做的事情.
批评者抱怨,因为旧版本的Perl不会理解并且与开头的表单很好地配合v.但是,如果您的Perl版本支持它,v则可以更好地阅读,因为您可以说:
use v5.10.1;
Run Code Online (Sandbox Code Playgroud)
... 而不是 ...
use 5.010_001;
Run Code Online (Sandbox Code Playgroud)
因此,对于在文档中使用,下面的解决办法是提供:
use 5.006; use v5.6.1;
Run Code Online (Sandbox Code Playgroud)
注意: 我认为这里的文档是错误的,因为v在例子中省略了perldoc use.
由于不支持v语法的Perl版本在第一次失败时use,它们将无法获得第二个更具体和可读的版本.
| 归档时间: |
|
| 查看次数: |
5242 次 |
| 最近记录: |