LinuxCommandLibrary

plenv

Manage multiple Perl versions

TLDR

Show the currently selected Perl version and how it was selected

$ plenv version
copy

List all available installed Perl versions
$ plenv versions
copy

Set the global Perl version (used unless a local or shell version takes priority)
$ plenv global [version]
copy

Set the local application-specific Perl version (used in the current directory and all directories below it)
$ plenv local [version]
copy

Set the shell-specific Perl version (used for the current session only)
$ plenv shell [version]
copy

Display help
$ plenv
copy

Display help for a command
$ plenv help [command]
copy

SYNOPSIS

plenv [command] [args] [--version] [--help] [--verbose]

PARAMETERS

--version
    Display plenv version and exit

--help
    Show general help or help for command

--verbose
    Enable verbose output for commands

install [version]
    Install a Perl version using perl-build

uninstall version
    Remove a Perl version

rehash
    Regenerate shims for installed executables

global [version|--unset]
    Set or unset global Perl version

local [version|--unset]
    Set or unset local Perl version in .perl-version

shell [version]
    Temporarily activate a Perl version in current shell

versions
    List installed and current Perl versions

version-name
    Show current Perl version name

version-file-read
    Read version from .perl-version file

whence command
    Locate executable in shims or versions

DESCRIPTION

plenv is a lightweight Perl version management tool inspired by rbenv and pyenv. It enables users to install, manage, and switch between multiple Perl versions seamlessly on a per-user or per-project basis.

plenv works by inserting executable shims into your $PATH, which transparently delegate to the selected Perl version. This avoids system-wide changes and conflicts with package managers. Key features include global and local version settings via .perl-version files, shell integration for temporary overrides, and support for perl-build to compile Perl from source.

Ideal for developers working on legacy projects requiring specific Perl versions or testing across CPAN dependencies. It prepends shim directories to PATH, ensuring perl, cpan, and other tools resolve correctly without aliases or wrappers. plenv integrates with shells like bash, zsh, and fish via init scripts.

CAVEATS

Requires perl-build for installations; shims may conflict with system perl if PATH misordered.
Not suitable for root installs; per-user only.

INSTALLATION

curl -L https://raw.github.com/tokuhirom/plenv/master/bin/plenv-installer | bash
Then add to shell: export PATH="$PLENV_ROOT/bin:$PATH"; eval "$(plenv init -)"

SHELL INTEGRATION

Supports bash, zsh, fish. Run plenv init - after setup and restart shell.

HISTORY

Created in 2013 by tokuhirom as rbenv port for Perl. Actively maintained on GitHub; integrates perl-build (successor to perlbrew). Gained popularity post-Perl 5.18 for multi-version workflows.

SEE ALSO

perl(1), cpan(1), sh(1)

Copied to clipboard