Perl Diver 2.31
Main Environment Variables Perl Default Values Perl Config - Summary Perl Config - Full Installed Modules List Directory uptime Docs

Module Documentation
Details and documentation about a specific module, including version and documentation (if available). Note that while links to perldoc.com and search.cpan.org are provided, the module may be part of a larger distribution. If you reach a File Not Found page on either site, please try the parent module.

Sub::Exporter::ForMethods

Name Sub::Exporter::ForMethods
Version 0.100052
Located at /usr/share/perl5/vendor_perl
File /usr/share/perl5/vendor_perl/Sub/Exporter/ForMethods.pm
Is Core No
Search CPAN for this module Sub::Exporter::ForMethods
Documentation Sub::Exporter::ForMethods
Module Details Sub::Exporter::ForMethods


NAME

Sub::Exporter::ForMethods - helper routines for using Sub::Exporter to build methods


VERSION

version 0.100052


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

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

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

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.


AUTHOR

Ricardo Signes <rjbs@cpan.org>


COPYRIGHT AND LICENSE

This software is copyright (c) 2015 by Ricardo Signes.

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

Perl Diver brought to you by ScriptSolutions.com © 1997- 2024