NAME
Class::MakeMethods::Attribute - Declare generated subs with attribute syntax
SYNOPSIS
package
MyObject;
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;
sub
new :MakeMethod(
'new'
);
sub
foo :MakeMethod(
'scalar'
);
sub
bar :MakeMethod(
'scalar'
, {
hashkey
=>
'bar_data'
});
sub
debug :MakeMethod(
'Standard::Global:scalar'
);
package
MySubclass;
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
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 byÊDamian Conway.
See Class::MakeMethods for general information about this distribution.
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 139:
Non-ASCII character seen before =encoding in 'byÊDamian'. Assuming CP1252