Sub::Exporter::ForMethods(3) User Contributed Perl Documentation Sub::Exporter::ForMethods(3)

# [SYNOPSIS](#SYNOPSIS)

In an exporting library:

```
  package Method::Builder;
  use Sub::Exporter::ForMethods qw(method_installer);
  use Sub::Exporter -setup => {
    exports   => [ method => \'_method_generator' ],
    installer => method_installer,
  };
  sub _method_generator {
    my ($self, $name, $arg, $col) = @_;
    return sub { ... };
  };
```

In an importing library:

```
  package Vehicle::Autobot;
  use Method::Builder method => { -as => 'transform' };
```

# [DESCRIPTION](#DESCRIPTION)

The synopsis section, above, looks almost indistinguishable from any other use of Sub::Exporter, apart from the use of "method\_installer". It is nearly indistinguishable in behavior, too. The only change is that subroutines exported from Method::Builder into named slots in Vehicle::Autobot will be wrapped in a subroutine called "Vehicle::Autobot::transform". This will insert a named frame into stack traces to aid in debugging.

More importantly (for the author, anyway), they will not be removed by namespace::autoclean. This makes the following code work:

```
  package MyLibrary;
  use Math::Trig qw(tan);         # uses Exporter.pm
  use String::Truncate qw(trunc); # uses Sub::Exporter's defaults
  use Sub::Exporter::ForMethods qw(method_installer);
  use Mixin::Linewise { installer => method_installer }, qw(read_file);
  use namespace::autoclean;
  ...
  1;
```

After MyLibrary is compiled, "namespace::autoclean" will remove "tan" and "trunc" as foreign contaminants, but will leave "read\_file" in place. It will also remove "method\_installer", an added win.

# [EXPORTS](#EXPORTS)

Sub::Exporter::ForMethods offers only one routine for export, and it may also be called by its full package name:

## [method\_installer](#method_installer)

```
  my $installer = method_installer(\%arg);
```

This routine returns an installer suitable for use as the "installer" argument to Sub::Exporter. It updates the "\\@to\_export" argument to wrap all code that will be installed by name in a named subroutine, then passes control to the default Sub::Exporter installer.

The only argument to "method\_installer" is an optional hashref which may contain a single entry for "rebless". If the value for "rebless" is true, when a blessed subroutine is wrapped, the wrapper will be blessed into the same package.

2026-10-25 perl v5.44.0

---

Document: Sub::Exporter::ForMethods(3pm) from perl-sub-exporter-formethods 0.100055-r4 (Chainguard OS)
Source: https://github.com/rjbs/Sub-Exporter-ForMethods
