---
name: "Devel::PatchPerl::Plugin"
section: "3pm"
platform: "linux"
package: "perl-devel-patchperl"
version: "2.14-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Devel::PatchPerl::Plugin"
---

# Devel::PatchPerl::Plugin(3pm)

Devel::PatchPerl plugins explained

## NAME

Devel::PatchPerl::Plugin - Devel::PatchPerl plugins explained

## VERSION

version 2.14

## DESCRIPTION

This document explains the Devel::PatchPerl plugin system.

Plugins are a mechanism for providing additional functionality to Devel::PatchPerl.

Plugins are searched for in the Devel::PatchPerl::Plugin namespace.

## INITIALISATION

The plugin constructor is `"patchperl"`.

A plugin is specified using the `"PERL5_PATCHPERL_PLUGIN"` environment variable. It may either be specified in full (ie. `"Devel::PatchPerl::Plugin::Feegle"`) or as the short part (ie. `"Feegle"`).

```
  $ export PERL5_PATCHPERL_PLUGIN=Devel::PatchPerl::Plugin::Feegle
  $ export PERL5_PATCHPERL_PLUGIN=Feegle
```

When Devel::PatchPerl has identified the perl source patch and done its patching it will attempt to load the plugin identified. It will then call the class method `"patchperl"` for the plugin package, with the following parameters:

```
  'version', the Perl version of the source tree;
  'source', the absolute path to the Perl source tree;
  'patchexe', the 'patch' utility that can be used;
```

Plugins are called with the current working directory being the root of the Perl source tree, ie. `"source"`.

Summarised:

```
  $ENV{PERL5_PATCHPERL_PLUGIN} = 'Devel::PatchPerl::Plugin::Feegle';
  my $plugin = $ENV{PERL5_PATCHPERL_PLUGIN};
  eval "require $plugin";
  eval {
    $plugin->patchperl( version => $vers, source => $srcdir, patchexe => $patch );
  };
```

Plugins are responsible for checking that their patches apply to the version of perl that is being patched.

## WHAT CAN PLUGINS DO?

Anything you desire to a Perl source tree.

## WHY USE AN ENVIRONMENT VARIABLE TO SPECIFY PLUGINS?

So that indicating a plugin to use can be specified independently of whatever mechanism is calling Devel::PatchPerl to do its bidding.

Think perlbrew.

## AUTHOR

Chris Williams \<chris@bingosnet.co.uk\>

## COPYRIGHT AND LICENSE

This software is copyright (c) 2025 by Chris Williams and Marcus Holland-Moritz.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
