如何在没有许可证和构建信息的情况下获取Perl版本字符串?

tkclm6bt  于 2023-10-24  发布在  Perl
关注(0)|答案(4)|浏览(153)

perl --version打印所有这些:

This is perl 5, version 26, subversion 1 (v5.26.1) built for darwin-thread-multi-2level

Copyright 1987-2017, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

我想要的是:

5.26.1

有没有现成的方法来实现这个功能,或者我需要编写自己的正则表达式来从详细输出中提取它?

gj3fmq9x

gj3fmq9x1#

变量$^V包含这些信息。你可以直接从Perl内部打印出来:

#!/usr/bin/perl

use strict;
use warnings;

print $^V;

或者你可以在bash中得到它:

perl -e 'print $^V'

这两个版本都在我的系统上打印“v5.22.1”。

9cbw7uwe

9cbw7uwe2#

perl -e'print substr($^V, 1)'      # 5.10+

perl -MConfig -e'print $Config{version}'
svujldwt

svujldwt3#

除了$^V$Config{version}之外,还有$],它保存版本的数值。

$ perl -MConfig -E 'say for $], $^V, $Config{version}'
5.016003
v5.16.3
5.16.3
laawzig2

laawzig24#

在shell中,执行以下操作:

$ perl -e 'printf "%vd\n", $^V;'
5.26.1

与公认的答案相比,这是一个更向后兼容的答案,因为它适用于从v5.6.0到v5.10.0的perl版本(而不是仅仅回到v5.10.0)。
来自https://perldoc.perl.org/perlvar#$%5EV:
“这个变量第一次出现在perl v5.6.0中...在perl v5.10.0之前,$^V被表示为v-string而不是version对象。”
要以可移植方式将$^V转换为其字符串表示形式,请使用sprintf()"%vd"转换,该转换适用于v字符串或版本对象:

相关问题