Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

sub::exporter::formethods(3pm) [debian man page]

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

NAME
Sub::Exporter::ForMethods - helper routines for using Sub::Exporter to build methods VERSION
version 0.091970 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 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. AUTHOR
Ricardo Signes <rjbs@cpan.org> COPYRIGHT AND LICENSE
This software is copyright (c) 2009 by Ricardo Signes. This is free software; you can redistribute it and/or modify it under the same terms as perl itself. perl v5.10.1 2009-07-16 Sub::Exporter::ForMethods(3pm)

Check Out this Related Man Page

Sub::Exporter::GlobExporter(3pm)			User Contributed Perl Documentation			  Sub::Exporter::GlobExporter(3pm)

NAME
Sub::Exporter::GlobExporter - export shared globs with Sub::Exporter collectors VERSION
version 0.002 SYNOPSIS
First, you write something that exports globs: package Shared::Symbol; use Sub::Exporter; use Sub::Exporter::GlobExport qw(glob_exporter); use Sub::Exporter -setup => { ... collectors => { '$Symbol' => glob_exporter(Symbol => '_shared_globref') }, }; sub _shared_globref { return *Common } Now other code can import $Symbol and get their *Symbol made an alias to *Shared::Symbol::Symbol. If you don't know what this means or why you'd want to do it, you may want to stop reading now. The other class can do something like this: use Shared::Symbol '$Symbol'; print $Symbol; # prints the scalar entry of *Shared::Symbol::Symbol ...or... use Shared::Symbol '$Symbol' => { -as => 'SharedSymbol' }; print $SharedSymbol; # prints the scalar entry of *Shared::Symbol::Symbol OVERVIEW
Sub::Exporter::GlobExporter provides only one routine, "glob_exporter", which may be called either by its full name or may be imported on request. my $exporter = glob_exporter( $default_name, $globref_locator ); The routine returns a collection validator that will export a glob into the importing package. It will export it under the name $default_name, unless an alternate name is given (as shown above). The glob that is installed is specified by the $globref_locator, which can be either the globref itself, or a reference to a string which will be called on the exporter For an example, see the "SYNOPSIS", in which a method is defined to produce the globref to share. This allows the glob-exporting package to be subclassed, for for the subclass to choose to re-use the same glob when exporting or to export a new one. If there are entries in the arguments to the globref-exporting collector other than those beginning with a dash, a hashref of them will be passed to the globref locator. In other words, if we were to write this: use Shared::Symbol '$Symbol' => { arg => 1, -as => 2 }; It would result in a call like the following: my $globref = Shared::Symbol->_shared_globref({ arg => 1 }); AUTHOR
Ricardo Signes <rjbs@cpan.org> COPYRIGHT AND LICENSE
This software is copyright (c) 2010 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.10.1 2010-11-23 Sub::Exporter::GlobExporter(3pm)
Man Page