Eva*_*oll 20 perl version catalyst
我只是注意到了由此产生的Catalyst.pl.这显然是某种未经注释的黑客攻击.设置这样的版本字符串有什么好处?我甚至无法弄清楚他们想要做什么.
our $VERSION = '0.01';
$VERSION = eval $VERSION;
Run Code Online (Sandbox Code Playgroud)
too*_*lic 12
如果您想要发布模块的"beta"或"alpha"版本,但不希望CPAN.pm将其列为最近,请在常规版本号之后使用"_"后跟至少2位数,例如.1.20_01.如果这样做,建议使用以下习惯用法:
- $ VERSION ="1.12_01";
- $ XS_VERSION = $ VERSION; #只有拥有XS代码才需要
- $ VERSION = eval $ VERSION;
有了这个技巧,MakeMaker将只读取第一行,从而读取下划线,而perl解释器将评估$ VERSION并将字符串转换为数字.稍后将$ VERSION视为数字的操作将能够执行此操作,而不会引发有关$ VERSION不是数字的警告.
eval将字符串"0.001_001"转换为数字,遵循Perl数字文字的规则(允许下划线表示易读性).结果是数字0.001001.
如果没有eval,则字符串将转换为遵循用于转换字符串的规则的数字,该字符串将停在第一个非数字字符处.
例如: perl -e 'print "0.001_001" + 0'
我可能会错误地记住这一点,但我认为一些自动代码解析器喜欢看到代码行:
our $VERSION = '0.01';
Run Code Online (Sandbox Code Playgroud)
但是你真的想要$ VERSION来保持一个浮点而不是一个字符串.
你可能想读这篇文章,我知道我会去.
哦,亲爱的上帝,现在我记得我为什么用
our $VERSION = 20100903;
Run Code Online (Sandbox Code Playgroud)
风格版本号.那只是疯了.我喜欢Perl,但那是纯粹的,精致的,浓缩的疯狂.我不会试图总结David Golden的文章.你只需要阅读并哭泣.