1 .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.3
4 .\" ========================================================================
5 .de Sh \" Subsection heading
13 .de Sp \" Vertical space (when we can't use .PP)
17 .de Vb \" Begin verbatim text
22 .de Ve \" End verbatim text
26 .\" Set up some character translations and predefined strings. \*(-- will
27 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28 .\" double quote, and \*(R" will give a right double quote. | will give a
29 .\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
30 .\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
31 .\" expand to `' in nroff, nothing in troff, for use with C<>.
33 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
37 . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38 . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
51 .\" If the F register is turned on, we'll generate index entries on stderr for
52 .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53 .\" entries marked with X<> in POD. Of course, you'll have to process the
54 .\" output yourself in some meaningful fashion.
57 . tm Index:\\$1\t\\n%\t"\\$2"
63 .\" For nroff, turn off justification. Always turn off hyphenation; it makes
64 .\" way too many mistakes in technical documents.
68 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69 .\" Fear. Run. Save yourself. No user-serviceable parts.
70 . \" fudge factors for nroff and troff
79 . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
85 . \" simple accents for nroff and troff
95 . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96 . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97 . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98 . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99 . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100 . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
102 . \" troff and (daisy-wheel) nroff accents
103 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110 .ds ae a\h'-(\w'a'u*4/10)'e
111 .ds Ae A\h'-(\w'A'u*4/10)'E
112 . \" corrections for vroff
113 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115 . \" for low resolution devices (crt and lpr)
116 .if \n(.H>23 .if \n(.V>19 \
129 .\" ========================================================================
131 .IX Title "Sub::Install 3"
132 .TH Sub::Install 3 "2009-01-16" "perl v5.8.7" "User Contributed Perl Documentation"
134 Sub::Install \- install subroutines into packages easily
139 .IX Header "SYNOPSIS"
145 \& Sub::Install::install_sub({
146 \& code => sub { ... },
152 .IX Header "DESCRIPTION"
153 This module makes it easy to install subroutines into packages without the
154 unslightly mess of \f(CW\*(C`no strict\*(C'\fR or typeglobs lying about where just anyone can
157 .IX Header "FUNCTIONS"
159 .IX Subsection "install_sub"
161 \& Sub::Install::install_sub({
162 \& code => \e&subroutine,
163 \& into => "Finance::Shady",
168 This routine installs a given code reference into a package as a normal
169 subroutine. The above is equivalent to:
173 \& *{"Finance::Shady" . '::' . "launder"} = \e&subroutine;
176 If \f(CW\*(C`into\*(C'\fR is not given, the sub is installed into the calling package.
178 If \f(CW\*(C`code\*(C'\fR is not a code reference, it is looked for as an existing sub in the
179 package named in the \f(CW\*(C`from\*(C'\fR parameter. If \f(CW\*(C`from\*(C'\fR is not given, it will look
180 in the calling package.
182 If \f(CW\*(C`as\*(C'\fR is not given, and if \f(CW\*(C`code\*(C'\fR is a name, \f(CW\*(C`as\*(C'\fR will default to \f(CW\*(C`code\*(C'\fR.
183 If \f(CW\*(C`as\*(C'\fR is not given, but if \f(CW\*(C`code\*(C'\fR is a code ref, Sub::Install will try to
184 find the name of the given code ref and use that as \f(CW\*(C`as\*(C'\fR.
186 That means that this code:
189 \& Sub::Install::install_sub({
191 \& from => 'Person::InPain',
192 \& into => 'Person::Teenager',
200 \& package Person::Teenager;
204 \& Sub::Install::install_sub({
205 \& code => Person::InPain\->can('twitch'),
210 .IX Subsection "reinstall_sub"
211 This routine behaves exactly like \f(CW\*(C`\*(L"install_sub\*(R"\*(C'\fR, but does not emit a
212 warning if warnings are on and the destination is already defined.
213 .Sh "install_installers"
214 .IX Subsection "install_installers"
215 This routine is provided to allow Sub::Install compatibility with
216 Sub::Installer. It installs \f(CW\*(C`install_sub\*(C'\fR and \f(CW\*(C`reinstall_sub\*(C'\fR methods into
217 the package named by its argument.
220 \& Sub::Install::install_installers('Code::Builder'); # just for us, please
221 \& Code::Builder\->install_sub({ name => $code_ref });
225 \& Sub::Install::install_installers('UNIVERSAL'); # feeling lucky, punk?
226 \& Anything::At::All\->install_sub({ name => $code_ref });
229 The installed installers are similar, but not identical, to those provided by
230 Sub::Installer. They accept a single hash as an argument. The key/value pairs
231 are used as the \f(CW\*(C`as\*(C'\fR and \f(CW\*(C`code\*(C'\fR parameters to the \f(CW\*(C`install_sub\*(C'\fR routine
232 detailed above. The package name on which the method is called is used as the
233 \&\f(CW\*(C`into\*(C'\fR parameter.
235 Unlike Sub::Installer's \f(CW\*(C`install_sub\*(C'\fR will not eval strings into code, but
236 will look for named code in the calling package.
239 Sub::Install exports \f(CW\*(C`install_sub\*(C'\fR and \f(CW\*(C`reinstall_sub\*(C'\fR only if they are
242 .IX Subsection "exporter"
243 Sub::Install has a never-exported subroutine called \f(CW\*(C`exporter\*(C'\fR, which is used
244 to implement its \f(CW\*(C`import\*(C'\fR routine. It takes a hashref of named arguments,
245 only one of which is currently recognize: \f(CW\*(C`exports\*(C'\fR. This must be an arrayref
246 of subroutines to offer for export.
248 This routine is mainly for Sub::Install's own consumption. Instead, consider
251 .IX Header "SEE ALSO"
252 .IP "Sub::Installer" 4
253 .IX Item "Sub::Installer"
254 This module is (obviously) a reaction to Damian Conway's Sub::Installer, which
255 does the same thing, but does it by getting its greasy fingers all over
256 \&\s-1UNIVERSAL\s0. I was really happy about the idea of making the installation of
257 coderefs less ugly, but I couldn't bring myself to replace the ugliness of
258 typeglobs and loosened strictures with the ugliness of \s-1UNIVERSAL\s0 methods.
259 .IP "Sub::Exporter" 4
260 .IX Item "Sub::Exporter"
261 This is a complete Exporter.pm replacement, built atop Sub::Install.
264 Ricardo Signes, \f(CW\*(C`<rjbs@cpan.org>\*(C'\fR
266 Several of the tests are adapted from tests that shipped with Damian Conway's
267 Sub-Installer distribution.
270 Please report any bugs or feature requests through the web interface at
271 <http://rt.cpan.org>. I will be notified, and then you'll automatically be
272 notified of progress on your bug as I make changes.
274 .IX Header "COPYRIGHT"
275 Copyright 2005\-2006 Ricardo Signes, All Rights Reserved.
277 This program is free software; you can redistribute it and/or modify it
278 under the same terms as Perl itself.