1 .\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.10)
4 .\" ========================================================================
5 .de Sp \" Vertical space (when we can't use .PP)
9 .de Vb \" Begin verbatim text
14 .de Ve \" End verbatim text
18 .\" Set up some character translations and predefined strings. \*(-- will
19 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
20 .\" double quote, and \*(R" will give a right double quote. \*(C+ will
21 .\" give a nicer C++. Capital omega is used to do unbreakable dashes and
22 .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
23 .\" nothing in troff, for use with C<>.
25 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
29 . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
30 . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
43 .\" Escape single quotes in literal strings from groff's Unicode transform.
47 .\" If the F register is turned on, we'll generate index entries on stderr for
48 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
49 .\" entries marked with X<> in POD. Of course, you'll have to process the
50 .\" output yourself in some meaningful fashion.
53 . tm Index:\\$1\t\\n%\t"\\$2"
63 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
64 .\" Fear. Run. Save yourself. No user-serviceable parts.
65 . \" fudge factors for nroff and troff
74 . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80 . \" simple accents for nroff and troff
90 . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
91 . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
92 . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
93 . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
94 . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
95 . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
97 . \" troff and (daisy-wheel) nroff accents
98 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
99 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
100 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
101 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
102 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
103 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
104 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
105 .ds ae a\h'-(\w'a'u*4/10)'e
106 .ds Ae A\h'-(\w'A'u*4/10)'E
107 . \" corrections for vroff
108 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
109 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
110 . \" for low resolution devices (crt and lpr)
111 .if \n(.H>23 .if \n(.V>19 \
124 .\" ========================================================================
126 .IX Title "PPI::Statement::Sub 3"
127 .TH PPI::Statement::Sub 3 "2009-08-08" "perl v5.8.7" "User Contributed Perl Documentation"
128 .\" For nroff, turn off justification. Always turn off hyphenation; it makes
129 .\" way too many mistakes in technical documents.
133 PPI::Statement::Sub \- Subroutine declaration
135 .IX Header "INHERITANCE"
137 \& PPI::Statement::Sub
138 \& isa PPI::Statement
143 .IX Header "DESCRIPTION"
144 Except for the special \s-1BEGIN\s0, \s-1CHECK\s0, \s-1UNITCHECK\s0, \s-1INIT\s0, and \s-1END\s0 subroutines
145 (which are part of PPI::Statement::Scheduled) all subroutine declarations
146 are lexed as a PPI::Statement::Sub object.
148 Primarily, this means all of the various \f(CW\*(C`sub foo {}\*(C'\fR statements, but also
149 forward declarations such as \f(CW\*(C`sub foo;\*(C'\fR or \f(CW\*(C`sub foo($);\*(C'\fR. It \fBdoes not\fR
150 include anonymous subroutines, as these are merely part of a normal statement.
153 \&\f(CW\*(C`PPI::Statement::Sub\*(C'\fR has a number of methods in addition to the standard
154 PPI::Statement, PPI::Node and PPI::Element methods.
156 .IX Subsection "name"
157 The \f(CW\*(C`name\*(C'\fR method returns the name of the subroutine being declared.
159 In some rare cases such as a naked \f(CW\*(C`sub\*(C'\fR at the end of the file, this may return
162 .IX Subsection "prototype"
163 If it has one, the \f(CW\*(C`prototype\*(C'\fR method returns the subroutine's prototype.
164 It is returned in the same format as \*(L"prototype\*(R" in PPI::Token::Prototype,
165 cleaned and removed from its brackets.
167 Returns false if the subroutine does not define a prototype
169 .IX Subsection "block"
170 With its name and implementation shared with PPI::Statement::Scheduled,
171 the \f(CW\*(C`block\*(C'\fR method finds and returns the actual Structure object of the
172 code block for this subroutine.
174 Returns false if this is a forward declaration, or otherwise does not have a
177 .IX Subsection "forward"
178 The \f(CW\*(C`forward\*(C'\fR method returns true if the subroutine declaration is a
181 That is, it returns false if the subroutine has a code block, or true
184 .IX Subsection "reserved"
185 The \f(CW\*(C`reserved\*(C'\fR method provides a convenience method for checking to see
186 if this is a special reserved subroutine. It does not check against any
187 particular list of reserved sub names, but just returns true if the name
188 is all uppercase, as defined in perlsub.
190 Note that in the case of \s-1BEGIN\s0, \s-1CHECK\s0, \s-1UNITCHECK\s0, \s-1INIT\s0 and \s-1END\s0, these will be
191 defined as PPI::Statement::Scheduled objects, not subroutines.
193 Returns true if it is a special reserved subroutine, or false if not.
196 \&\- Write unit tests for this package
199 See the support section in the main module.
202 Adam Kennedy <adamk@cpan.org>
204 .IX Header "COPYRIGHT"
205 Copyright 2001 \- 2009 Adam Kennedy.
207 This program is free software; you can redistribute
208 it and/or modify it under the same terms as Perl itself.
210 The full text of the license can be found in the
211 \&\s-1LICENSE\s0 file included with this module.