Как распечатать информацию, которую Perl печатает с "--version", но из скрипта? - PullRequest
1 голос
/ 22 сентября 2019

Чтобы напечатать версию Perl из скрипта, используйте $^V.Но я хотел бы видеть полную строку, которую Perl печатает с --version или -v, которая выглядит как

"Это Perl 5, версия 24, subversion 1 (v5.24.1), созданная для MSWin32-64-многопоточный».Или «Это Perl 5, версия 26, Subversion 3 (v5.26.3), созданная для x86_64-cygwin-threads-multi (с 7 зарегистрированными исправлениями, смотрите perl -V для более подробной информации)».

У меня естьдве среды, которые, я думаю, могут вызывать две разные установки Perl, но обе являются новыми, поэтому $^V возвращает 5.24.1 для обеих.

Ответы [ 2 ]

4 голосов
/ 22 сентября 2019

Вы ищете модуль Config :

$ perl -MConfig -E 'say "perl $^V built for $Config{archname}"'
perl v5.26.1 built for x86_64-linux-gnu-thread-multi
0 голосов
/ 22 сентября 2019

Если вам нужна точная строка (как в perl -v выводе) в вашем скрипте, вы можете запустить команду «perl -v» из вашего скрипта и получить строку непосредственно из вывода команды, используя IPC :: Run :: run () .

use strict;

use IPC::Run qw(run);

# Variables to capture the STDOUT and STDERR
my ($out, $err);

# function "run" from IPC::Run to execute the "perl -v" command
# and keep the STDOUT in $out variable and STDERR in $err
# $out will have the complete output of "perl -v" command
run([$^X, "-v"], \undef, \$out, \$err);

# split the output at new line and
# then get the second line (index 1) from the array
my $version_line = ( split /\n/, $out )[1];

print $version_line."\n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...