Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Sub::Exporter::ForMethUser3Contributed Perl DocumeSub::Exporter::ForMethods(3)

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 v5.24.1			  2015-07-17	  Sub::Exporter::ForMethods(3)

NAME | VERSION | SYNOPSIS | DESCRIPTION | EXPORTS | AUTHOR | COPYRIGHT AND LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Sub::Exporter::ForMethods&sektion=3&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help