1MakeMethods::Attribute(U3s)er Contributed Perl DocumentatMiaokneMethods::Attribute(3)
2
3
4
6 Class::MakeMethods::Attribute - Declare generated subs with attribute
7 syntax
8
10 package MyObject;
11 use Class::MakeMethods::Attribute 'Standard::Hash';
12
13 sub new :MakeMethod('new');
14 sub foo :MakeMethod('scalar');
15 sub bar :MakeMethod('scalar', { hashkey => 'bar_data' });
16 sub debug :MakeMethod('Standard::Global:scalar');
17
19 This package allows common types of methods to be generated via a
20 subroutine attribute declaration. (Available in Perl 5.6 and later.)
21
22 Adding the :MakeMethod() attribute to a subroutine declaration causes
23 Class::MakeMethods to create and install a subroutine based on the
24 parameters given to the :MakeMethod attribute.
25
26 You can declare a default method-generation class by passing the name
27 of a MakeMethods subclass in the use Class::MakeMethods::Attribute
28 statement. This default method-generation class will also apply as the
29 default to any subclasses declared at compile time. If no default
30 method-generation class is selected, you will need to fully-qualify all
31 method type declarations.
32
34 Here's a typical use of Class::MakeMethods::Attribute:
35
36 package MyObject;
37 use Class::MakeMethods::Attribute 'Standard::Hash';
38
39 sub new :MakeMethod('new');
40 sub foo :MakeMethod('scalar');
41 sub bar :MakeMethod('scalar', { hashkey => 'bar_data' });
42 sub debug :MakeMethod('Standard::Global:scalar');
43
44 package MySubclass;
45 use base 'MyObject';
46
47 sub bazzle :MakeMethod('scalar');
48
49 This is equivalent to the following explicit Class::MakeMethods
50 invocations:
51
52 package MyObject;
53
54 use Class::MakeMethods (
55 -MakerClass => 'Standard::Hash',
56 new => 'new',
57 scalar => 'foo',
58 scalar => [ 'ba', { hashkey => 'bar_data' } ],
59 'Standard::Global:scalar' => 'debug',
60 );
61
62 package MySubclass;
63 use base 'MyObject';
64
65 use Class::MakeMethods (
66 -MakerClass => 'Standard::Hash',
67 scalar => 'bazzle',
68 );
69
71 The following warnings and errors may be produced when using
72 Class::MakeMethods::Attribute to generate methods. (Note that this list
73 does not include run-time messages produced by calling the generated
74 methods, or the standard messages produced by Class::MakeMethods.)
75
76 Can't apply MakeMethod attribute to %s declaration.
77 You can not use the ":MakeMethod" attribute with lexical or
78 anonymous subroutine declarations.
79
80 No method type provided for MakeMethod attribute.
81 You called :MakeMethod() without the required method-type argument.
82
84 See Attribute::Handlers byÊDamian Conway.
85
86 See Class::MakeMethods for general information about this distribution.
87
89 Hey! The above document had some coding errors, which are explained
90 below:
91
92 Around line 139:
93 Non-ASCII character seen before =encoding in 'byÊDamian'. Assuming
94 CP1252
95
96
97
98perl v5.36.0 2023-01-20 MakeMethods::Attribute(3)