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

FreeBSD Manual Pages


home | help
MakeMethods::Autoload(User Contributed Perl DocumentatMakeMethods::Autoload(3)

       Class::MakeMethods::Autoload - Declare generated	subs with AUTOLOAD

	 package MyObject;
	 use Class::MakeMethods::Autoload 'Standard::Hash::scalar';

	 package main;
	 my $obj = bless {}, 'MyObject';

	 print $obj->foo();

       This package provides a generate-on-demand interface to

       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:

       o   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

       o   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'

       o   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',

       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 Class::MakeMethods for general information about this distribution.

       For distribution, installation, support,	copyright and license
       information, see	Class::MakeMethods::Docs::ReadMe.

perl v5.24.1			  2004-09-06	      MakeMethods::Autoload(3)


Want to link to this manual page? Use this URL:

home | help