MakeMethods::AttributeUser Contributed Perl DocumentaMakeMethods::Attribute(3)NAMEClass::MakeMethods::Attribute - Declare generated subs with attribute
syntax
SYNOPSIS
package MyObject;
use Class::MakeMethods::Attribute 'Standard::Hash';
sub new :MakeMethod('new');
sub foo :MakeMethod('scalar');
sub bar :MakeMethod('scalar', { hashkey => 'bar_data' });
sub debug :MakeMethod('Standard::Global:scalar');
DESCRIPTION
This package allows common types of methods to be generated via a
subroutine attribute declaration. (Available in Perl 5.6 and later.)
Adding the :MakeMethod() attribute to a subroutine declaration causes
Class::MakeMethods to create and install a subroutine based on the
parameters given to the :MakeMethod attribute.
You can declare a default method-generation class by passing the name
of a MakeMethods subclass in the use Class::MakeMethods::Attribute
statement. This default method-generation class will also apply as the
default to any subclasses declared at compile time. If no default
method-generation class is selected, you will need to fully-qualify all
method type declarations.
EXAMPLE
Here's a typical use of Class::MakeMethods::Attribute:
package MyObject;
use Class::MakeMethods::Attribute 'Standard::Hash';
sub new :MakeMethod('new');
sub foo :MakeMethod('scalar');
sub bar :MakeMethod('scalar', { hashkey => 'bar_data' });
sub debug :MakeMethod('Standard::Global:scalar');
package MySubclass;
use base 'MyObject';
sub bazzle :MakeMethod('scalar');
This is equivalent to the following explicit Class::MakeMethods
invocations:
package MyObject;
use Class::MakeMethods (
-MakerClass => 'Standard::Hash',
new => 'new',
scalar => 'foo',
scalar => [ 'ba', { hashkey => 'bar_data' } ],
'Standard::Global:scalar' => 'debug',
);
package MySubclass;
use base 'MyObject';
use Class::MakeMethods (
-MakerClass => 'Standard::Hash',
scalar => 'bazzle',
);
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.)
Can't apply MakeMethod attribute to %s declaration.
You can not use the ":MakeMethod" attribute with lexical or
anonymous subroutine declarations.
No method type provided for MakeMethod attribute.
You called ":MakeMethod()" without the required method-type
argument.
SEE ALSO
See Attribute::Handlers byEDamian Conway.
See Class::MakeMethods for general information about this distribution.
perl v5.14.2 2004-09-06 MakeMethods::Attribute(3)