sub installed_perls { my $self = shift; my @result; my $root = $self->root; for (<$root/perls/*>) { my ($name) = $_ =~ m/\/([^\/]+$)/; my $executable = joinpath($_, 'bin', 'perl'); my $version_file = joinpath($_,'.version'); my $orig_version; if ( -e $version_file ){ open my $fh, '<', $version_file; local $/; $orig_version = <$fh>; chomp $orig_version; } else { $orig_version = `$executable -e 'print \$]'`; if ( defined $orig_version and length $orig_version ){ if (open my $fh, '>', $version_file ){ print {$fh} $orig_version; } } } push @result, { name => $name, orig_version=> $orig_version, version => $self->format_perl_version($orig_version), is_current => ($self->current_perl eq $name) && !($self->current_lib), libs => [ $self->local_libs($name) ], executable => $executable }; } return sort { $a->{orig_version} <=> $b->{orig_version} or $a->{name} cmp $b->{name} } @result; }