我已经读过,$VERSION在所有Perl脚本中始终包含一个数字是一种良好的做法,但我从未完全理解其目的.
通过在脚本中包含版本号,您真正获得了什么?
只有模块,只有推送到CPAN的模块才能真正受益于指定$VERSION.除了使用熟悉的名称而不是发明新名称(如果您希望脚本的版本可访问)之外,脚本中没有太多用处.
主要用途:
CPAN使用它作为分发版本,允许它索引同一分发的不同版本.
cpan并cpanm使用它来检查已安装的模块是否具有足够高的级别以满足所需的最低版本的依赖项.
正如brian d foy所提到的,它也可以通过检查use Foo 1.23;,但是大多数人都避免这样做,而是支持在其发行版的META文件中指定所需的依赖项版本.这允许cpan并cpanm在需要时更新依赖关系(使用时use Foo 1.23;会导致安装在测试期间失败).由于缺乏使用该功能,它几乎不是主要用途.
您可以在use语句中指定模块的最小版本:
use Foo 1.23;
Run Code Online (Sandbox Code Playgroud)
当Perl加载该模块时,它会查看$VERSION变量以检查它是否等于或大于该数字.这样您就可以获得正确的功能和修复.
CPAN客户端用于$VERSION确定您是否是最新的,或者是否应安装最新版本的模块.
对于程序或脚本,您通常不需要$VERSION.