perlbrew available --all
можно использовать для перечисления всех доступных выпусков.
Но на самом деле это бесполезно. Это будет включать следующие дополнительные версии:
- Разрабатываемая версия
Возможно, вы захотите протестировать свой код с помощью последней версии разработчика.
Будет сложно обнаружить в --all
; вам лучше посетить этот и щелкнуть стрелку «v» перед версией. - Релиз-кандидаты
Возможно, вы хотите протестировать свой код, используя последний релиз-кандидат.
В --all
сложно будет заметить; вам лучше посетить этот и щелкнуть стрелку «v» перед версией. - Более ранние второстепенные версии
Нет причин перечислять их, потому что второстепенные версии монотонно увеличиваются с 0
. Итак, если вы знаете, что существует дополнительная версия .4 (из perlbrew available
), то вы знаете, что .3, .2, .1 и .0 также существуют.
Тем не менее, OP предложил в комментариях, что им действительно нужен список установленных версий.
perlbrew
не предоставляет средств для этого. Версия обычно используется как часть имени установки, поэтому вы можете использовать perlbrew list
, чтобы приблизиться к этому.
5.32.0t
5.32t
* latest
5.30.2t
5.30t
acpcw
gloomhaven
5.28.2t
5.28t
...
Но, как видите, это не всегда работает. В настоящее время я использую что-то, называемое latest
, что не дает мне версии.
Чтобы получить фактический список, вы можете использовать следующее:
use 5.014;
use warnings;
use IPC::System::Simple qw( capturex );
use Sort::Key::Natural qw( natsort rnatsort );
my $root_dir_qfn = $ENV{PERLBREW_ROOT} // "$ENV{HOME}/perl5/perlbrew"; # "
my $perls_dir_qfn = "$root_dir_qfn/perls";
opendir(my $dh, $perls_dir_qfn)
or die("Can't open dir \"$perls_dir_qfn\": $!\n");
my %versions;
while (defined( my $name = readdir($dh) )) {
next if $name =~ /^\./;
my $perl_dir_qfn = "$perls_dir_qfn/$name";
eval {
my $version = capturex("$perl_dir_qfn/bin/perl", "-e", 'print $^V');
die "Program exited with error ".( $? >> 8 )."\n" if $?;
push @{ $versions{$version} }, $name;
return 1; # No exception.
}
or warn("Can't get version for \"$name\": $@");
}
for my $version (rnatsort keys(%versions)) {
say "$version: " . join(" ", natsort @{ $versions{$version} });
}
Вывод:
v5.32.0: 5.32.0t 5.32t latest
v5.30.2: 5.30.2t 5.30t acpcw gloomhaven
v5.28.2: 5.28.2t 5.28t
v5.26.3: 5.26.3t 5.26t
v5.26.1: system
v5.24.4: 5.24.4t 5.24t
v5.22.4: 5.22.4t 5.22t
v5.20.3: 5.20.3t 5.20t
v5.18.4: 5.18.4t 5.18t
v5.16.3: 5.16.3t 5.16t
v5.14.4: 5.14.4t 5.14t
v5.12.5: 5.12.5t 5.12t
v5.10.1: 5.10.1t 5.10t
Вышеупомянутая программа не обрабатывает версии Perl, которые не поддерживают $^V
, но с этим легко справиться, используя $] < ... ? $] : eval('$^V')
.
Приведенная выше программа может также можно изменить для группировки по поддержке потоков, арке и т. д. c.