我是否可以使用新的5.12包版本语法,而不指定所需的Perl版本?
我对使用VERSION语法和Perl 5.12中引用的NAME VERSION语法的需求感到困惑.我预计必须同时指定:
use v5.12; package MyPackage 0.01; 我看到的任何例子都是这样的.但是,由于意外(即复制&粘贴而不用注意),我发现,当我使用5.010甚至没有指定版本时,这个新的包版本语法工作. 底层的Perl安装是ActiveState 5.14,所以在这种情况下,解释器版本是唯一的要求?我的印象是,新功能总是需要使用VERSION语法,以帮助向后兼容.有没有例外? 解决方法
不是每个新功能都是功能.
使用VERSION语法这样做: >当当前perl版本太低时抛出错误. bundle features included --------- ----------------- :default array_base :5.10 say state switch array_base :5.12 say state switch unicode_strings array_base :5.14 say state switch unicode_strings array_base :5.16 say state switch unicode_strings unicode_eval evalbytes current_sub fc (实际上,array_base是在5.16中引入的,但是被添加到以前的bundle中,用于back-compat). 一些修改是如此向后兼容,不需要提供一种方法来停用它们(这是功能说明).使用MODULE VERSION语法大部分是向后兼容的.因为版本和导入列表之间的逗号缺失 use MODULE VERSION LIST; 这不是一个问题(即这种语法以前是非法的).当LIST丢失时,导入方法将会收到Perl上不识别此语法的版本号.出口商模块处理这种情况,并检查模块版本.因此,通过出口商(大多数)提供进口的所有模块都是安全的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |