MakeMethods::Autoload(User Contributed Perl DocumentatMakeMethods::Autoload(3)NAMEClass::MakeMethods::Autoload - Declare generated subs with AUTOLOAD
SYNOPSIS
package MyObject;
use Class::MakeMethods::Autoload 'Standard::Hash::scalar';
package main;
my $obj = bless {}, 'MyObject';
$obj->foo("Foozle");
print $obj->foo();
DESCRIPTION
This package provides a generate-on-demand interface to
Class::MakeMethods.
When your class uses this package, it imports an AUTOLOAD function that
resolves missing methods by using Class::MakeMethods to generate and
install a standard type of method.
You must specify the type of method to be generated by passing a single
argument to your use Class::MakeMethods::Autoload statement, which can
take any of these forms:
· A Class::MakeMethods generator name and method type.
Here are three examples:
use Class::MakeMethods::Autoload 'Standard::Hash:scalar';
use Class::MakeMethods::Autoload 'Basic::Universal::no_op';
use Class::MakeMethods::Autoload
'::Class::MakeMethod::Composite::Global:array';
· A reference to a subroutine which will be called for each requested
function name and which is expected to return the name of the
method generator to use.
Here's a contrived example which generates scalar accessors for
methods except those with a digit in their name, which are treated
as globals.
use Class::MakeMethods::Autoload sub {
my $name = shift;
( $name =~ /\d/ ) ? 'Standard::Global::scalar'
: 'Standard::Hash::scalar'
};
· A reference to a hash which defines which method type to use based
on the name of the requested method. If a key exists which is an
exact match for the requested function name, the associated value
is used; otherwise, each of the keys is used as a regular
expression, and the value of the first one that matches the
function name is used. (For regular expression matching, the keys
are tested in reverse length order, longest to shortest.)
Here's an example which provides a new() constructor, a DESTROY()
method that does nothing, and a wildcard match that provides scalar
accessors for all other Autoloaded methods:
use Class::MakeMethods::Autoload {
'new' => 'Standard::Hash::new',
'.*' => 'Standard::Hash::scalar',
'DESTROY' => 'Standard::Universal::no_op',
};
Here's a more sophisticated example which causes all-upper-case
method names to be generated as globals, those with a leading
upper-case letter to be generated as inheritable data methods, and
others to be normal accessors:
use Class::MakeMethods::Autoload {
'new' => 'Standard::Hash::new',
'.*' => 'Standard::Hash::scalar',
'[A-Z].*' => 'Standard::Inheritable::scalar',
'[A-Z0-9]+' => 'Standard::Global::scalar',
'DESTROY' => 'Standard::Universal::no_op',
};
DIAGNOSTICS
The following warnings and errors may be produced when using
Class::MakeMethods::Attribute to generate methods. (Note that this list
does not include run-time messages produced by calling the generated
methods, or the standard messages produced by Class::MakeMethods.)
No default method type; can't autoload
You must declare a default method type, generally by passing its
name to a "use Class::MakeMethods::Autoload" statement, prior to
autoloading any methods.
Construction of %s method %s failed to produce usable method
Indicates that Autoload succesfully called Class::MakeMethods->make
to generate the requested method, but afterwards was not able to
invoke the generated method. You may have selected an incompatible
method type, or the method may not have been installed sucesfully.
SEE ALSO
See Class::MakeMethods for general information about this distribution.
For distribution, installation, support, copyright and license
information, see Class::MakeMethods::Docs::ReadMe.
perl v5.14.2 2004-09-06 MakeMethods::Autoload(3)