The perlbrew for Windows Strawberry Perl!
berrybrew can download, install, remove and manage multiple concurrent
versions of Strawberry Perl for Windows. There is no
to have Strawberry Perl installed before using
Updating the list of Strawberry Perls available is as simple as running a single
berrybrew fetch, and works at runtime.
Use the bb command as a short hand name for berrybrew.
Table of Contents
- Update Perls Available
- Configure Perl Instance Directory
- Developed Using
- Hidden Features
The easiest and most straight forward method.
git clone https://github.com/stevieb9/berrybrew cd berrybrew bin\berrybrew.exe config
Pre-built zip archive
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
Add/Remove Programs in the Control Panel, or the
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
Then, run the
berrybrew unconfig command which removes the
variables for any in-use Perl installation, and then removes
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
Remove the Perl installation root directory (by default
Remove the original download directory
HKLM\Software\Microsoft\Windows\Current Version\Run\BerrybrewUIregistry value
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
If the new install will not be in the same directory as your previous version,
copy any new or differing configuration options in the
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
The next best method is to use
berrybrew upgrade. This requires Git to be
installed and in your
PATH. It will create a
directory and copy your configuration files into it.
After completion, it'll copy your
perls_custom.json file back into the
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
Doing a straight
git pull will overwrite your configuration files, so
back them up first (see Caveats).
Update Perls Available
berrybrew fetch to retrieve the most recent availability list from
Strawberry Perl. If any new or changed versions are found, we'll update the
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
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
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
berrybrew options root_dir PATH, where
PATHis the full path to the directory you'd like to store Perls in
berrybrew options temp_dir PATH, where
PATHis the full path to the temporary storage area. Typically, this is a directory inside of the
root_diryou set above
berrybrew off, to flush the
move all Perl installations from the old path to the new one
remove the old directory
berrybrew switch $versionto set things back up
.Net Framework 2.0 or higher
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
You can also enable debugging to get more verbose output on the command line:
berrybrew debug <command> [options]
berrybrew Full documentation for the application
Berrybrew API API documentation
Configuration Guide to various configuration files and options
Compile Your Own Installation Guide to compiling
Create a Development Build Guide to creating a development build for testing new functionality
Unit Testing Documentation for unit testing
Create and Publish a Release Guide to creating a release, publishing it as a production install, and setting up the next release branch
git pullto do an upgrade, your configuration files will be overwritten with the defaults. If you have any customizations, make a backup of the
datadirectory 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.jsonfile used for custom Perl installations (clones) and the
perls_virtual.jsonfile used for virtual Perl installations will never be overwritten, and this warning does not apply for them.
At this time,
berrybrewrequires Administrative privileges to operate correctly. This is due to the way Windows forces the System
PATHto take precedence over User
|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
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
This feature should only be used by developers of berrybrew.
debug feature, I've added a new
test argument. It must
berrybrew and preceed all further operations. To include the
debug argument as well, specify it first, then include
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.
David Farrell [http://perltricks.com]