Perl中$VERSION变量的真正用途是什么?

Perl中$VERSION变量的真正用途是什么?,perl,version,Perl,Version,我已经读到,在所有Perl脚本中始终包含一个$VERSION编号被认为是一种良好的做法,但我从未完全理解其目的 通过在脚本中包含版本号,您真正获得了什么?您可以在use语句中指定模块的最低版本: use Foo 1.23; 当Perl加载该模块时,它查看$VERSION变量以检查它是否等于或大于该数字。这样您就可以获得正确的功能和修复 CPAN客户端使用$VERSION确定您是最新的还是应该安装模块的最新版本 对于程序或脚本,通常不需要$VERSION仅模块,只有那些推送到CPAN的模块才真

我已经读到,在所有Perl脚本中始终包含一个
$VERSION
编号被认为是一种良好的做法,但我从未完全理解其目的


通过在脚本中包含版本号,您真正获得了什么?

您可以在
use
语句中指定模块的最低版本:

 use Foo 1.23;
当Perl加载该模块时,它查看
$VERSION
变量以检查它是否等于或大于该数字。这样您就可以获得正确的功能和修复

CPAN客户端使用
$VERSION
确定您是最新的还是应该安装模块的最新版本


对于程序或脚本,通常不需要
$VERSION

仅模块,只有那些推送到CPAN的模块才真正受益于指定
$VERSION
。它在脚本中没有多大用处,除非使用一个熟悉的名称,而不是发明一个新名称,如果您希望脚本的版本可以访问的话

主要用途:

  • CPAN使用它作为发行版的版本,允许它对同一发行版的不同版本进行索引

  • cpan
    cpanm
    使用它来检查已安装的模块是否具有足够高的级别,以满足依赖项的最低版本要求


正如brian d foy提到的,它也可以通过
use Foo 1.23进行检查
,但大多数人都避免这样做,而是在发行版的元文件中指定所需版本的依赖项。这允许
cpan
cpanm
根据需要更新依赖项(如果使用
use Foo 1.23;
会导致安装在测试期间失败)。由于缺少该功能的使用,它几乎不是主要用途。

您在哪里读到过?也许还有其他重要的背景。@briandfoy,老实说,我不记得了(我不久前在某个地方读过它,从那时起,我的所有脚本中都包含了一个版本号,但我从未真正知道它的用途。