Add built local::lib
[catagits/Gitalist.git] / local-lib5 / man / man3 / PPI::Statement::Include.3pm
1 .\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.10)
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sp \" Vertical space (when we can't use .PP)
6 .if t .sp .5v
7 .if n .sp
8 ..
9 .de Vb \" Begin verbatim text
10 .ft CW
11 .nf
12 .ne \\$1
13 ..
14 .de Ve \" End verbatim text
15 .ft R
16 .fi
17 ..
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<>.
24 .tr \(*W-
25 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
26 .ie n \{\
27 .    ds -- \(*W-
28 .    ds PI pi
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
31 .    ds L" ""
32 .    ds R" ""
33 .    ds C` ""
34 .    ds C' ""
35 'br\}
36 .el\{\
37 .    ds -- \|\(em\|
38 .    ds PI \(*p
39 .    ds L" ``
40 .    ds R" ''
41 'br\}
42 .\"
43 .\" Escape single quotes in literal strings from groff's Unicode transform.
44 .ie \n(.g .ds Aq \(aq
45 .el       .ds Aq '
46 .\"
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.
51 .ie \nF \{\
52 .    de IX
53 .    tm Index:\\$1\t\\n%\t"\\$2"
54 ..
55 .    nr % 0
56 .    rr F
57 .\}
58 .el \{\
59 .    de IX
60 ..
61 .\}
62 .\"
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
66 .if n \{\
67 .    ds #H 0
68 .    ds #V .8m
69 .    ds #F .3m
70 .    ds #[ \f1
71 .    ds #] \fP
72 .\}
73 .if t \{\
74 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
75 .    ds #V .6m
76 .    ds #F 0
77 .    ds #[ \&
78 .    ds #] \&
79 .\}
80 .    \" simple accents for nroff and troff
81 .if n \{\
82 .    ds ' \&
83 .    ds ` \&
84 .    ds ^ \&
85 .    ds , \&
86 .    ds ~ ~
87 .    ds /
88 .\}
89 .if t \{\
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'
96 .\}
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 \
112 \{\
113 .    ds : e
114 .    ds 8 ss
115 .    ds o a
116 .    ds d- d\h'-1'\(ga
117 .    ds D- D\h'-1'\(hy
118 .    ds th \o'bp'
119 .    ds Th \o'LP'
120 .    ds ae ae
121 .    ds Ae AE
122 .\}
123 .rm #[ #] #H #V #F C
124 .\" ========================================================================
125 .\"
126 .IX Title "PPI::Statement::Include 3"
127 .TH PPI::Statement::Include 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.
130 .if n .ad l
131 .nh
132 .SH "NAME"
133 PPI::Statement::Include \- Statements that include other code
134 .SH "SYNOPSIS"
135 .IX Header "SYNOPSIS"
136 .Vb 9
137 \&  # The following are all includes
138 \&  use 5.006;
139 \&  use strict;
140 \&  use My::Module;
141 \&  use constant FOO => \*(AqFoo\*(Aq;
142 \&  require Foo::Bar;
143 \&  require "Foo/Bar.pm";
144 \&  require $foo if 1;
145 \&  no strict \*(Aqrefs\*(Aq;
146 .Ve
147 .SH "INHERITANCE"
148 .IX Header "INHERITANCE"
149 .Vb 4
150 \&  PPI::Statement::Include
151 \&  isa PPI::Statement
152 \&      isa PPI::Node
153 \&          isa PPI::Element
154 .Ve
155 .SH "DESCRIPTION"
156 .IX Header "DESCRIPTION"
157 Despite its name, the \f(CW\*(C`PPI::Statement::Include\*(C'\fR class covers a number
158 of different types of statement that cover all statements starting with
159 \&\f(CW\*(C`use\*(C'\fR, \f(CW\*(C`no\*(C'\fR and \f(CW\*(C`require\*(C'\fR.
160 .PP
161 But basically, they cover three situations.
162 .PP
163 Firstly, a dependency on a particular version of perl (for which the
164 \&\f(CW\*(C`version\*(C'\fR method returns true), a pragma (for which the \f(CW\*(C`pragma\*(C'\fR method
165 returns true, or the loading (and unloading via no) of modules.
166 .SH "METHODS"
167 .IX Header "METHODS"
168 \&\f(CW\*(C`PPI::Statement::Include\*(C'\fR has a number of methods in addition to the standard
169 PPI::Statement, PPI::Node and PPI::Element methods.
170 .SS "type"
171 .IX Subsection "type"
172 The \f(CW\*(C`type\*(C'\fR method returns the general type of statement (\f(CW\*(Aquse\*(Aq\fR, \f(CW\*(Aqno\*(Aq\fR
173 or \f(CW\*(Aqrequire\*(Aq\fR).
174 .PP
175 Returns the type as a string, or \f(CW\*(C`undef\*(C'\fR if the type cannot be detected.
176 .SS "module"
177 .IX Subsection "module"
178 The \f(CW\*(C`module\*(C'\fR method returns the module name specified in any include
179 statement. This \f(CW\*(C`includes\*(C'\fR pragma names, because pragma are implemented
180 as modules. (And lets face it, the definition of a pragma can be fuzzy
181 at the best of times in any case)
182 .PP
183 This covers all of these...
184 .PP
185 .Vb 4
186 \&  use strict;
187 \&  use My::Module;
188 \&  no strict;
189 \&  require My::Module;
190 .Ve
191 .PP
192 \&...but does not cover any of these...
193 .PP
194 .Vb 3
195 \&  use 5.006;
196 \&  require 5.005;
197 \&  require "explicit/file/name.pl";
198 .Ve
199 .PP
200 Returns the module name as a string, or \f(CW\*(C`undef\*(C'\fR if the include does
201 not specify a module name.
202 .SS "module_version"
203 .IX Subsection "module_version"
204 The \f(CW\*(C`module_version\*(C'\fR method returns the minimum version of the module
205 required by the statement, if there is one.
206 .SS "pragma"
207 .IX Subsection "pragma"
208 The \f(CW\*(C`pragma\*(C'\fR method checks for an include statement's use as a
209 pragma, and returns it if so.
210 .PP
211 Or at least, it claims to. In practice it's a lot harder to say exactly
212 what is or isn't a pragma, because the definition is fuzzy.
213 .PP
214 The \f(CW\*(C`intent\*(C'\fR of a pragma is to modify the way in which the parser works.
215 This is done though the use of modules that do various types of internals
216 magic.
217 .PP
218 For now, \s-1PPI\s0 assumes that any \*(L"module name\*(R" that is only a set of
219 lowercase letters (and perhaps numbers, like \f(CW\*(C`use utf8;\*(C'\fR). This
220 behaviour is expected to change, most likely to something that knows
221 the specific names of the various \*(L"pragmas\*(R".
222 .PP
223 Returns the name of the pragma, or false ('') if the include is not a
224 pragma.
225 .SS "version"
226 .IX Subsection "version"
227 The \f(CW\*(C`version\*(C'\fR method checks for an include statement that introduces a
228 dependency on the version of \f(CW\*(C`perl\*(C'\fR the code is compatible with.
229 .PP
230 This covers two specific statements.
231 .PP
232 .Vb 2
233 \&  use 5.006;
234 \&  require 5.006;
235 .Ve
236 .PP
237 Currently the version is returned as a string, although in future the version
238 may be returned as a version object.  If you want a numeric representation,
239 use \f(CW\*(C`version_literal()\*(C'\fR.  Returns false if the statement is not a version
240 dependency.
241 .SS "version_literal"
242 .IX Subsection "version_literal"
243 The \f(CW\*(C`version_literal\*(C'\fR method has the same behavior as \f(CW\*(C`version()\*(C'\fR, but the
244 version is returned as a numeric literal.  Returns false if the statement is
245 not a version dependency.
246 .PP
247 The \f(CW\*(C`arguments\*(C'\fR method gives you the rest of the statement after the the
248 module/pragma and module version, i.e. the stuff that will be used to
249 construct what gets passed to the module's \f(CW\*(C`import()\*(C'\fR subroutine.  This does
250 include the comma, etc. operators, but doesn't include non-significant direct
251 children or any final semicolon.
252 .SH "TO DO"
253 .IX Header "TO DO"
254 \&\- Write specific unit tests for this package
255 .SH "SUPPORT"
256 .IX Header "SUPPORT"
257 See the support section in the main module.
258 .SH "AUTHOR"
259 .IX Header "AUTHOR"
260 Adam Kennedy <adamk@cpan.org>
261 .SH "COPYRIGHT"
262 .IX Header "COPYRIGHT"
263 Copyright 2001 \- 2009 Adam Kennedy.
264 .PP
265 This program is free software; you can redistribute
266 it and/or modify it under the same terms as Perl itself.
267 .PP
268 The full text of the license can be found in the
269 \&\s-1LICENSE\s0 file included with this module.