Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


The perlbrew for Windows Strawberry Perl!

Click here to download the installer

For a quick-start, jump to the Install and Commands sections.

berrybrew can download, install, remove and manage multiple concurrent versions of Strawberry Perl for Windows. There is no requirement to have Strawberry Perl installed before using berrybrew.

Updating the list of Strawberry Perls available is as simple as running a single command: berrybrew fetch, and works at runtime.

Use the bb command as a short hand name for berrybrew.

There is extensive documentation available for the berrybrew application, as well as the Berrybrew API. See SEE ALSO for the full list of documentation.

Table of Contents


Self-installing executable

The easiest and most straight forward method.

berrybrewInstaller.exe SHA1: aacea12d99ffa738e5cc8e6497d69fb98609fb36

Git clone
git clone
cd berrybrew
bin\berrybrew.exe config
Pre-built zip archive SHA1: 565fec0409ec33f4057fee80688dd7f28bc24b1b

After extraction:

cd berrybrew
bin\berrybrew.exe config

Compile your own

You can also Compile your own installation.


If you used the self-extracting installer, simply run the uninstaller from either Add/Remove Programs in the Control Panel, or the uninst.exe uninstaller program located in the installation directory.

If you installed via any other method:

First, run the berrybrew associate unset if you're managing the .pl file association with berrybrew.

Then, run the berrybrew unconfig command which removes the PATH environment variables for any in-use Perl installation, and then removes berrybrew from the PATH as well.

If you wish to delete the actual installation:

  • Stop the UI if it's running (right-click the System Tray Icon, and click Exit)

  • Remove the Perl installation root directory (by default C:\berrybrew)

  • Remove the original download directory

  • Remove the HKLM\Software\berrybrew registry key

  • Remove the HKLM\Software\Microsoft\Windows\Current Version\Run\BerrybrewUI registry value


See the Configuration document, and the options command in the berrybrew documentation.


See the berrybrew documentation for a full explanation of all of the following commands.

berrybrew <command> [subcommand] [option]

associate *    View and set Perl file association
available *    List available Strawberry Perl versions and which are installed
list           List installed Strawberry Perl versions
clean *        Remove all temporary berrybrew files
clone          Make a complete copy of a Perl installation
config         Add berrybrew to your PATH
exec *         Run a command for every installed Strawberry Perl
fetch          Update the list of Strawberry Perl instances available
install        Download, extract and install a Strawberry Perl
modules *      Export and import a module list from one Perl to install on another
options *      Display or set a single option, or display all of them with values
off            Disable berrybrew perls (use 'switch' to re-enable)
register       Manually register a custom installation directory
remove         Uninstall a Strawberry Perl
switch *       Switch to use a different Strawberry Perl
unconfig       Remove berrybrew from PATH
upgrade        Performs a safe upgrade. Requires Git installed
use *          Use a specific Strawberry Perl version temporarily
virtual        Allow berrybrew to manage an external Perl instance
help           Display this help screen
license        Show berrybrew license
version        Displays the version

* - view subcommand details with 'berrybrew <command> help'


See the berrybrew document for usage examples.


Using the installer is the best and safest way to upgrade your berrybrew.

If the new install will not be in the same directory as your previous version, copy any new or differing configuration options in the data\config.json file from the old instance to the new one, and if you've got a data\perls_custom.json or a data\perls_virtual.json file, copy them over in their entirety.

The next best method is to use berrybrew upgrade. This requires Git to be installed and in your PATH. It will create a backup_timestamp directory and copy your configuration files into it.

After completion, it'll copy your perls_custom.json file back into the data/ directory. The rest of the configuration JSON files will be replaced. If you had any customizations within any of the other configuration files, you'll need to manually merge those changes back into the updated config file in data/.

Doing a straight git pull will overwrite your configuration files, so back them up first (see Caveats).

Update Perls Available

Use berrybrew fetch to retrieve the most recent availability list from Strawberry Perl. If any new or changed versions are found, we'll update the local perls.json file with them.

Configure Root Directory

If using the installer to install from, you'll have the opportunity to configure this option during install, and nothing further is required.

Otherwise, follow these directions:

By default, we manage Perls out of the C:\berrybrew directory. To change this, modify the root_dir value in the data\config.json file. Use double-backslashes (\\) as the path separators.

WARNING: At this time, it is highly advised not to change this after you've already installed any instances of Perl. This feature is incomplete, and PATH and other things don't get properly reset yet. If you choose to ignore this, follow this procedure:

  • create a new directory in the file system to house the Perl instances

  • run berrybrew options root_dir PATH, where PATH is the full path to the directory you'd like to store Perls in

  • run berrybrew options temp_dir PATH, where PATH is the full path to the temporary storage area. Typically, this is a directory inside of the root_dir you set above

  • run berrybrew off, to flush the PATH environment variables

  • move all Perl installations from the old path to the new one

  • remove the old directory

  • run berrybrew switch $version to set things back up


  • .Net Framework 2.0 or higher

  • Windows only!

  • Mono or Visual Studio (only if compiling your own version)


If you run into trouble installing a Perl, try clearing the berrybrew cached downloads by running berrybrew clean.

You can also enable debugging to get more verbose output on the command line:

berrybrew debug <command> [options] 



  • When using git pull to do an upgrade, your configuration files will be overwritten with the defaults. If you have any customizations, make a backup of the data directory before upgrade, then copy the files back to their original location. Note that you may have to manually add any new config directives into the original config files. The perls_custom.json file used for custom Perl installations (clones) and the perls_virtual.json file used for virtual Perl installations will never be overwritten, and this warning does not apply for them.

  • At this time, berrybrew requires Administrative privileges to operate correctly. This is due to the way Windows forces the System PATH to take precedence over User PATH.

Developed Using

Software Description Notes
Jetbrains Rider .Net IDE Thanks to their Open Source Licensing
Jetbrains intelliJ IDEA IDE for Perl coding Freely available, also comes with the open source license
Camelcade Perl5 Plugin Perl5 Plugin for intelliJ IDEA
Devel::Camelcadedb Adds Perl5 debug support for intelliJ IDEA
Mono Open Source .Net Framework
Mono C# Compiler C# Open Source C# Compiler


2 Clause FreeBSD - see LICENSE



Hidden Features

There are certain features that should only be used by developers and maintainers of this software. There's only a couple, so if I create more and/or make them more complex, I'll create a separate document for them.


Displays paths and other information regarding the berrybrew installation itself.


This feature should only be used by developers of berrybrew.

Like the debug feature, I've added a new test argument. It must follow berrybrew and preceed all further operations. To include the debug argument as well, specify it first, then include test, then your command and any options:


  • Test feature only:

    berrybrew test clean ...

  • Test and Debug:

    berrybrew debug test clean ...

Currently, it's only used in the t/99_clean.t test to strip off unneeded path elements for a couple of specific tests.


This feature simply fetches the Perl instance that's currently in use, prints out its name, and exits. It will not display anything if there's no Perl currently in use.

Used primarily for certain unit tests.


This will register all orphaned Perl instances at once.


Checks the base distribution's configuration file, and if there are any newly added directives, we'll insert them into the registry. Used for upgrades and testing.


Loads all configuration options from the configuration file into the registry. Be warned that this will overwrite all changes that were previously changed within the registry.

Original Author

David Farrell []

Current Author

Steve Bertrand steveb<>

See Also

  • StrawberryPerl - Strawberry Perl for Windows

  • Perlbrew - the original Perl version manager for Unix based systems.

You can’t perform that action at this time.