This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Integrate with Sarathy. h2xs.PL had to be manually resolved,
[perl5.git] / pod / perlsub.pod
CommitLineData
a0d0e21e
LW
1=head1 NAME
2
3perlsub - Perl subroutines
4
5=head1 SYNOPSIS
6
7To declare subroutines:
8
09bef843
SB
9 sub NAME; # A "forward" declaration.
10 sub NAME(PROTO); # ditto, but with prototypes
11 sub NAME : ATTRS; # with attributes
12 sub NAME(PROTO) : ATTRS; # with attributes and prototypes
cb1a09d0 13
09bef843
SB
14 sub NAME BLOCK # A declaration and a definition.
15 sub NAME(PROTO) BLOCK # ditto, but with prototypes
16 sub NAME : ATTRS BLOCK # with attributes
17 sub NAME(PROTO) : ATTRS BLOCK # with prototypes and attributes
a0d0e21e 18
748a9306
LW
19To define an anonymous subroutine at runtime:
20
09bef843
SB
21 $subref = sub BLOCK; # no proto
22 $subref = sub (PROTO) BLOCK; # with proto
23 $subref = sub : ATTRS BLOCK; # with attributes
24 $subref = sub (PROTO) : ATTRS BLOCK; # with proto and attributes
748a9306 25
a0d0e21e
LW
26To import subroutines:
27
19799a22 28 use MODULE qw(NAME1 NAME2 NAME3);
a0d0e21e
LW
29
30To call subroutines:
31
5f05dabc 32 NAME(LIST); # & is optional with parentheses.
54310121 33 NAME LIST; # Parentheses optional if predeclared/imported.
19799a22 34 &NAME(LIST); # Circumvent prototypes.
5a964f20 35 &NAME; # Makes current @_ visible to called subroutine.
a0d0e21e
LW
36
37=head1 DESCRIPTION
38
19799a22
GS
39Like many languages, Perl provides for user-defined subroutines.
40These may be located anywhere in the main program, loaded in from
41other files via the C<do>, C<require>, or C<use> keywords, or
42generated on the fly using C<eval> or anonymous subroutines (closures).
43You can even call a function indirectly using a variable containing
44its name or a CODE reference.
cb1a09d0
AD
45
46The Perl model for function call and return values is simple: all
47functions are passed as parameters one single flat list of scalars, and
48all functions likewise return to their caller one single flat list of
49scalars. Any arrays or hashes in these call and return lists will
50collapse, losing their identities--but you may always use
51pass-by-reference instead to avoid this. Both call and return lists may
52contain as many or as few scalar elements as you'd like. (Often a
53function without an explicit return statement is called a subroutine, but
19799a22
GS
54there's really no difference from Perl's perspective.)
55
56Any arguments passed in show up in the array C<@_>. Therefore, if
57you called a function with two arguments, those would be stored in
58C<$_[0]> and C<$_[1]>. The array C<@_> is a local array, but its
59elements are aliases for the actual scalar parameters. In particular,
60if an element C<$_[0]> is updated, the corresponding argument is
61updated (or an error occurs if it is not updatable). If an argument
62is an array or hash element which did not exist when the function
63was called, that element is created only when (and if) it is modified
64or a reference to it is taken. (Some earlier versions of Perl
65created the element whether or not the element was assigned to.)
66Assigning to the whole array C<@_> removes that aliasing, and does
67not update any arguments.
68
69The return value of a subroutine is the value of the last expression
70evaluated. More explicitly, a C<return> statement may be used to exit the
54310121 71subroutine, optionally specifying the returned value, which will be
72evaluated in the appropriate context (list, scalar, or void) depending
73on the context of the subroutine call. If you specify no return value,
19799a22
GS
74the subroutine returns an empty list in list context, the undefined
75value in scalar context, or nothing in void context. If you return
76one or more aggregates (arrays and hashes), these will be flattened
77together into one large indistinguishable list.
78
79Perl does not have named formal parameters. In practice all you
80do is assign to a C<my()> list of these. Variables that aren't
81declared to be private are global variables. For gory details
82on creating private variables, see L<"Private Variables via my()">
83and L<"Temporary Values via local()">. To create protected
84environments for a set of functions in a separate package (and
85probably a separate file), see L<perlmod/"Packages">.
a0d0e21e
LW
86
87Example:
88
cb1a09d0
AD
89 sub max {
90 my $max = shift(@_);
a0d0e21e
LW
91 foreach $foo (@_) {
92 $max = $foo if $max < $foo;
93 }
cb1a09d0 94 return $max;
a0d0e21e 95 }
cb1a09d0 96 $bestday = max($mon,$tue,$wed,$thu,$fri);
a0d0e21e
LW
97
98Example:
99
100 # get a line, combining continuation lines
101 # that start with whitespace
102
103 sub get_line {
19799a22 104 $thisline = $lookahead; # global variables!
54310121 105 LINE: while (defined($lookahead = <STDIN>)) {
a0d0e21e
LW
106 if ($lookahead =~ /^[ \t]/) {
107 $thisline .= $lookahead;
108 }
109 else {
110 last LINE;
111 }
112 }
19799a22 113 return $thisline;
a0d0e21e
LW
114 }
115
116 $lookahead = <STDIN>; # get first line
19799a22 117 while (defined($line = get_line())) {
a0d0e21e
LW
118 ...
119 }
120
09bef843 121Assigning to a list of private variables to name your arguments:
a0d0e21e
LW
122
123 sub maybeset {
124 my($key, $value) = @_;
cb1a09d0 125 $Foo{$key} = $value unless $Foo{$key};
a0d0e21e
LW
126 }
127
19799a22
GS
128Because the assignment copies the values, this also has the effect
129of turning call-by-reference into call-by-value. Otherwise a
130function is free to do in-place modifications of C<@_> and change
131its caller's values.
cb1a09d0
AD
132
133 upcase_in($v1, $v2); # this changes $v1 and $v2
134 sub upcase_in {
54310121 135 for (@_) { tr/a-z/A-Z/ }
136 }
cb1a09d0
AD
137
138You aren't allowed to modify constants in this way, of course. If an
139argument were actually literal and you tried to change it, you'd take a
140(presumably fatal) exception. For example, this won't work:
141
142 upcase_in("frederick");
143
f86cebdf 144It would be much safer if the C<upcase_in()> function
cb1a09d0
AD
145were written to return a copy of its parameters instead
146of changing them in place:
147
19799a22 148 ($v3, $v4) = upcase($v1, $v2); # this doesn't change $v1 and $v2
cb1a09d0 149 sub upcase {
54310121 150 return unless defined wantarray; # void context, do nothing
cb1a09d0 151 my @parms = @_;
54310121 152 for (@parms) { tr/a-z/A-Z/ }
c07a80fd 153 return wantarray ? @parms : $parms[0];
54310121 154 }
cb1a09d0 155
19799a22
GS
156Notice how this (unprototyped) function doesn't care whether it was
157passed real scalars or arrays. Perl sees all arugments as one big,
158long, flat parameter list in C<@_>. This is one area where
159Perl's simple argument-passing style shines. The C<upcase()>
160function would work perfectly well without changing the C<upcase()>
161definition even if we fed it things like this:
cb1a09d0
AD
162
163 @newlist = upcase(@list1, @list2);
164 @newlist = upcase( split /:/, $var );
165
166Do not, however, be tempted to do this:
167
168 (@a, @b) = upcase(@list1, @list2);
169
19799a22
GS
170Like the flattened incoming parameter list, the return list is also
171flattened on return. So all you have managed to do here is stored
172everything in C<@a> and made C<@b> an empty list. See L<Pass by
173Reference> for alternatives.
174
175A subroutine may be called using an explicit C<&> prefix. The
176C<&> is optional in modern Perl, as are parentheses if the
177subroutine has been predeclared. The C<&> is I<not> optional
178when just naming the subroutine, such as when it's used as
179an argument to defined() or undef(). Nor is it optional when you
180want to do an indirect subroutine call with a subroutine name or
181reference using the C<&$subref()> or C<&{$subref}()> constructs,
182although the C<$subref-E<gt>()> notation solves that problem.
183See L<perlref> for more about all that.
184
185Subroutines may be called recursively. If a subroutine is called
186using the C<&> form, the argument list is optional, and if omitted,
187no C<@_> array is set up for the subroutine: the C<@_> array at the
188time of the call is visible to subroutine instead. This is an
189efficiency mechanism that new users may wish to avoid.
a0d0e21e
LW
190
191 &foo(1,2,3); # pass three arguments
192 foo(1,2,3); # the same
193
194 foo(); # pass a null list
195 &foo(); # the same
a0d0e21e 196
cb1a09d0 197 &foo; # foo() get current args, like foo(@_) !!
54310121 198 foo; # like foo() IFF sub foo predeclared, else "foo"
cb1a09d0 199
19799a22
GS
200Not only does the C<&> form make the argument list optional, it also
201disables any prototype checking on arguments you do provide. This
c07a80fd 202is partly for historical reasons, and partly for having a convenient way
19799a22 203to cheat if you know what you're doing. See L<Prototypes> below.
c07a80fd 204
09bef843 205Functions whose names are in all upper case are reserved to the Perl
19799a22
GS
206core, as are modules whose names are in all lower case. A
207function in all capitals is a loosely-held convention meaning it
208will be called indirectly by the run-time system itself, usually
209due to a triggered event. Functions that do special, pre-defined
210things include C<BEGIN>, C<END>, C<AUTOLOAD>, and C<DESTROY>--plus
211all functions mentioned in L<perltie>. The 5.005 release adds
212C<INIT> to this list.
5a964f20 213
b687b08b 214=head2 Private Variables via my()
cb1a09d0
AD
215
216Synopsis:
217
218 my $foo; # declare $foo lexically local
219 my (@wid, %get); # declare list of variables local
220 my $foo = "flurp"; # declare $foo lexical, and init it
221 my @oof = @bar; # declare @oof lexical, and init it
09bef843
SB
222 my $x : Foo = $y; # similar, with an attribute applied
223
224B<WARNING>: The use of attribute lists on C<my> declarations is
225experimental. This feature should not be relied upon. It may
226change or disappear in future releases of Perl. See L<attributes>.
cb1a09d0 227
19799a22
GS
228The C<my> operator declares the listed variables to be lexically
229confined to the enclosing block, conditional (C<if/unless/elsif/else>),
230loop (C<for/foreach/while/until/continue>), subroutine, C<eval>,
231or C<do/require/use>'d file. If more than one value is listed, the
232list must be placed in parentheses. All listed elements must be
233legal lvalues. Only alphanumeric identifiers may be lexically
09bef843 234scoped--magical built-ins like C<$/> must currently be C<local>ize
19799a22
GS
235with C<local> instead.
236
237Unlike dynamic variables created by the C<local> operator, lexical
238variables declared with C<my> are totally hidden from the outside
239world, including any called subroutines. This is true if it's the
240same subroutine called from itself or elsewhere--every call gets
241its own copy.
242
243This doesn't mean that a C<my> variable declared in a statically
244enclosing lexical scope would be invisible. Only dynamic scopes
245are cut off. For example, the C<bumpx()> function below has access
246to the lexical $x variable because both the C<my> and the C<sub>
247occurred at the same scope, presumably file scope.
5a964f20
TC
248
249 my $x = 10;
250 sub bumpx { $x++ }
251
19799a22
GS
252An C<eval()>, however, can see lexical variables of the scope it is
253being evaluated in, so long as the names aren't hidden by declarations within
254the C<eval()> itself. See L<perlref>.
cb1a09d0 255
19799a22 256The parameter list to my() may be assigned to if desired, which allows you
cb1a09d0
AD
257to initialize your variables. (If no initializer is given for a
258particular variable, it is created with the undefined value.) Commonly
19799a22 259this is used to name input parameters to a subroutine. Examples:
cb1a09d0
AD
260
261 $arg = "fred"; # "global" variable
262 $n = cube_root(27);
263 print "$arg thinks the root is $n\n";
264 fred thinks the root is 3
265
266 sub cube_root {
267 my $arg = shift; # name doesn't matter
268 $arg **= 1/3;
269 return $arg;
54310121 270 }
cb1a09d0 271
19799a22
GS
272The C<my> is simply a modifier on something you might assign to. So when
273you do assign to variables in its argument list, C<my> doesn't
6cc33c6d 274change whether those variables are viewed as a scalar or an array. So
cb1a09d0 275
5a964f20 276 my ($foo) = <STDIN>; # WRONG?
cb1a09d0
AD
277 my @FOO = <STDIN>;
278
5f05dabc 279both supply a list context to the right-hand side, while
cb1a09d0
AD
280
281 my $foo = <STDIN>;
282
5f05dabc 283supplies a scalar context. But the following declares only one variable:
748a9306 284
5a964f20 285 my $foo, $bar = 1; # WRONG
748a9306 286
cb1a09d0 287That has the same effect as
748a9306 288
cb1a09d0
AD
289 my $foo;
290 $bar = 1;
a0d0e21e 291
cb1a09d0
AD
292The declared variable is not introduced (is not visible) until after
293the current statement. Thus,
294
295 my $x = $x;
296
19799a22 297can be used to initialize a new $x with the value of the old $x, and
cb1a09d0
AD
298the expression
299
300 my $x = 123 and $x == 123
301
19799a22 302is false unless the old $x happened to have the value C<123>.
cb1a09d0 303
55497cff 304Lexical scopes of control structures are not bounded precisely by the
305braces that delimit their controlled blocks; control expressions are
19799a22 306part of that scope, too. Thus in the loop
55497cff 307
19799a22 308 while (my $line = <>) {
55497cff 309 $line = lc $line;
310 } continue {
311 print $line;
312 }
313
19799a22 314the scope of $line extends from its declaration throughout the rest of
55497cff 315the loop construct (including the C<continue> clause), but not beyond
316it. Similarly, in the conditional
317
318 if ((my $answer = <STDIN>) =~ /^yes$/i) {
319 user_agrees();
320 } elsif ($answer =~ /^no$/i) {
321 user_disagrees();
322 } else {
323 chomp $answer;
324 die "'$answer' is neither 'yes' nor 'no'";
325 }
326
19799a22
GS
327the scope of $answer extends from its declaration through the rest
328of that conditional, including any C<elsif> and C<else> clauses,
55497cff 329but not beyond it.
330
19799a22 331None of the foregoing text applies to C<if/unless> or C<while/until>
55497cff 332modifiers appended to simple statements. Such modifiers are not
19799a22 333control structures and have no effect on scoping.
55497cff 334
5f05dabc 335The C<foreach> loop defaults to scoping its index variable dynamically
19799a22
GS
336in the manner of C<local>. However, if the index variable is
337prefixed with the keyword C<my>, or if there is already a lexical
338by that name in scope, then a new lexical is created instead. Thus
339in the loop
55497cff 340
341 for my $i (1, 2, 3) {
342 some_function();
343 }
344
19799a22
GS
345the scope of $i extends to the end of the loop, but not beyond it,
346rendering the value of $i inaccessible within C<some_function()>.
55497cff 347
cb1a09d0 348Some users may wish to encourage the use of lexically scoped variables.
19799a22
GS
349As an aid to catching implicit uses to package variables,
350which are always global, if you say
cb1a09d0
AD
351
352 use strict 'vars';
353
19799a22
GS
354then any variable mentioned from there to the end of the enclosing
355block must either refer to a lexical variable, be predeclared via
77ca0c92 356C<our> or C<use vars>, or else must be fully qualified with the package name.
19799a22
GS
357A compilation error results otherwise. An inner block may countermand
358this with C<no strict 'vars'>.
359
360A C<my> has both a compile-time and a run-time effect. At compile
361time, the compiler takes notice of it. The principle usefulness
362of this is to quiet C<use strict 'vars'>, but it is also essential
363for generation of closures as detailed in L<perlref>. Actual
364initialization is delayed until run time, though, so it gets executed
365at the appropriate time, such as each time through a loop, for
366example.
367
368Variables declared with C<my> are not part of any package and are therefore
cb1a09d0
AD
369never fully qualified with the package name. In particular, you're not
370allowed to try to make a package variable (or other global) lexical:
371
372 my $pack::var; # ERROR! Illegal syntax
373 my $_; # also illegal (currently)
374
375In fact, a dynamic variable (also known as package or global variables)
f86cebdf 376are still accessible using the fully qualified C<::> notation even while a
cb1a09d0
AD
377lexical of the same name is also visible:
378
379 package main;
380 local $x = 10;
381 my $x = 20;
382 print "$x and $::x\n";
383
f86cebdf 384That will print out C<20> and C<10>.
cb1a09d0 385
19799a22
GS
386You may declare C<my> variables at the outermost scope of a file
387to hide any such identifiers from the world outside that file. This
388is similar in spirit to C's static variables when they are used at
389the file level. To do this with a subroutine requires the use of
390a closure (an anonymous function that accesses enclosing lexicals).
391If you want to create a private subroutine that cannot be called
392from outside that block, it can declare a lexical variable containing
393an anonymous sub reference:
cb1a09d0
AD
394
395 my $secret_version = '1.001-beta';
396 my $secret_sub = sub { print $secret_version };
397 &$secret_sub();
398
399As long as the reference is never returned by any function within the
5f05dabc 400module, no outside module can see the subroutine, because its name is not in
cb1a09d0 401any package's symbol table. Remember that it's not I<REALLY> called
19799a22 402C<$some_pack::secret_version> or anything; it's just $secret_version,
cb1a09d0
AD
403unqualified and unqualifiable.
404
19799a22
GS
405This does not work with object methods, however; all object methods
406have to be in the symbol table of some package to be found. See
407L<perlref/"Function Templates"> for something of a work-around to
408this.
cb1a09d0 409
c2611fb3 410=head2 Persistent Private Variables
5a964f20
TC
411
412Just because a lexical variable is lexically (also called statically)
f86cebdf 413scoped to its enclosing block, C<eval>, or C<do> FILE, this doesn't mean that
5a964f20
TC
414within a function it works like a C static. It normally works more
415like a C auto, but with implicit garbage collection.
416
417Unlike local variables in C or C++, Perl's lexical variables don't
418necessarily get recycled just because their scope has exited.
419If something more permanent is still aware of the lexical, it will
420stick around. So long as something else references a lexical, that
421lexical won't be freed--which is as it should be. You wouldn't want
422memory being free until you were done using it, or kept around once you
423were done. Automatic garbage collection takes care of this for you.
424
425This means that you can pass back or save away references to lexical
426variables, whereas to return a pointer to a C auto is a grave error.
427It also gives us a way to simulate C's function statics. Here's a
428mechanism for giving a function private variables with both lexical
429scoping and a static lifetime. If you do want to create something like
430C's static variables, just enclose the whole function in an extra block,
431and put the static variable outside the function but in the block.
cb1a09d0
AD
432
433 {
54310121 434 my $secret_val = 0;
cb1a09d0
AD
435 sub gimme_another {
436 return ++$secret_val;
54310121 437 }
438 }
cb1a09d0
AD
439 # $secret_val now becomes unreachable by the outside
440 # world, but retains its value between calls to gimme_another
441
54310121 442If this function is being sourced in from a separate file
cb1a09d0 443via C<require> or C<use>, then this is probably just fine. If it's
19799a22 444all in the main program, you'll need to arrange for the C<my>
cb1a09d0 445to be executed early, either by putting the whole block above
f86cebdf 446your main program, or more likely, placing merely a C<BEGIN>
cb1a09d0
AD
447sub around it to make sure it gets executed before your program
448starts to run:
449
450 sub BEGIN {
54310121 451 my $secret_val = 0;
cb1a09d0
AD
452 sub gimme_another {
453 return ++$secret_val;
54310121 454 }
455 }
cb1a09d0 456
19799a22
GS
457See L<perlmod/"Package Constructors and Destructors"> about the
458special triggered functions, C<BEGIN> and C<INIT>.
cb1a09d0 459
19799a22
GS
460If declared at the outermost scope (the file scope), then lexicals
461work somewhat like C's file statics. They are available to all
462functions in that same file declared below them, but are inaccessible
463from outside that file. This strategy is sometimes used in modules
464to create private variables that the whole module can see.
5a964f20 465
cb1a09d0
AD
466=head2 Temporary Values via local()
467
19799a22 468B<WARNING>: In general, you should be using C<my> instead of C<local>, because
6d28dffb 469it's faster and safer. Exceptions to this include the global punctuation
cb1a09d0 470variables, filehandles and formats, and direct manipulation of the Perl
19799a22 471symbol table itself. Format variables often use C<local> though, as do
cb1a09d0
AD
472other variables whose current value must be visible to called
473subroutines.
474
475Synopsis:
476
477 local $foo; # declare $foo dynamically local
478 local (@wid, %get); # declare list of variables local
479 local $foo = "flurp"; # declare $foo dynamic, and init it
480 local @oof = @bar; # declare @oof dynamic, and init it
481
482 local *FH; # localize $FH, @FH, %FH, &FH ...
483 local *merlyn = *randal; # now $merlyn is really $randal, plus
484 # @merlyn is really @randal, etc
485 local *merlyn = 'randal'; # SAME THING: promote 'randal' to *randal
54310121 486 local *merlyn = \$randal; # just alias $merlyn, not @merlyn etc
cb1a09d0 487
19799a22
GS
488A C<local> modifies its listed variables to be "local" to the
489enclosing block, C<eval>, or C<do FILE>--and to I<any subroutine
490called from within that block>. A C<local> just gives temporary
491values to global (meaning package) variables. It does I<not> create
492a local variable. This is known as dynamic scoping. Lexical scoping
493is done with C<my>, which works more like C's auto declarations.
cb1a09d0 494
19799a22 495If more than one variable is given to C<local>, they must be placed in
5f05dabc 496parentheses. All listed elements must be legal lvalues. This operator works
cb1a09d0 497by saving the current values of those variables in its argument list on a
5f05dabc 498hidden stack and restoring them upon exiting the block, subroutine, or
cb1a09d0
AD
499eval. This means that called subroutines can also reference the local
500variable, but not the global one. The argument list may be assigned to if
501desired, which allows you to initialize your local variables. (If no
502initializer is given for a particular variable, it is created with an
503undefined value.) Commonly this is used to name the parameters to a
504subroutine. Examples:
505
506 for $i ( 0 .. 9 ) {
507 $digits{$i} = $i;
54310121 508 }
cb1a09d0 509 # assume this function uses global %digits hash
54310121 510 parse_num();
cb1a09d0
AD
511
512 # now temporarily add to %digits hash
513 if ($base12) {
514 # (NOTE: not claiming this is efficient!)
515 local %digits = (%digits, 't' => 10, 'e' => 11);
516 parse_num(); # parse_num gets this new %digits!
517 }
518 # old %digits restored here
519
19799a22 520Because C<local> is a run-time operator, it gets executed each time
cb1a09d0
AD
521through a loop. In releases of Perl previous to 5.0, this used more stack
522storage each time until the loop was exited. Perl now reclaims the space
523each time through, but it's still more efficient to declare your variables
524outside the loop.
525
f86cebdf
GS
526A C<local> is simply a modifier on an lvalue expression. When you assign to
527a C<local>ized variable, the C<local> doesn't change whether its list is viewed
cb1a09d0
AD
528as a scalar or an array. So
529
530 local($foo) = <STDIN>;
531 local @FOO = <STDIN>;
532
5f05dabc 533both supply a list context to the right-hand side, while
cb1a09d0
AD
534
535 local $foo = <STDIN>;
536
537supplies a scalar context.
538
3e3baf6d
TB
539A note about C<local()> and composite types is in order. Something
540like C<local(%foo)> works by temporarily placing a brand new hash in
541the symbol table. The old hash is left alone, but is hidden "behind"
542the new one.
543
544This means the old variable is completely invisible via the symbol
545table (i.e. the hash entry in the C<*foo> typeglob) for the duration
546of the dynamic scope within which the C<local()> was seen. This
547has the effect of allowing one to temporarily occlude any magic on
548composite types. For instance, this will briefly alter a tied
549hash to some other implementation:
550
551 tie %ahash, 'APackage';
552 [...]
553 {
554 local %ahash;
555 tie %ahash, 'BPackage';
556 [..called code will see %ahash tied to 'BPackage'..]
557 {
558 local %ahash;
559 [..%ahash is a normal (untied) hash here..]
560 }
561 }
562 [..%ahash back to its initial tied self again..]
563
564As another example, a custom implementation of C<%ENV> might look
565like this:
566
567 {
568 local %ENV;
569 tie %ENV, 'MyOwnEnv';
570 [..do your own fancy %ENV manipulation here..]
571 }
572 [..normal %ENV behavior here..]
573
6ee623d5 574It's also worth taking a moment to explain what happens when you
f86cebdf
GS
575C<local>ize a member of a composite type (i.e. an array or hash element).
576In this case, the element is C<local>ized I<by name>. This means that
6ee623d5
GS
577when the scope of the C<local()> ends, the saved value will be
578restored to the hash element whose key was named in the C<local()>, or
579the array element whose index was named in the C<local()>. If that
580element was deleted while the C<local()> was in effect (e.g. by a
581C<delete()> from a hash or a C<shift()> of an array), it will spring
582back into existence, possibly extending an array and filling in the
583skipped elements with C<undef>. For instance, if you say
584
585 %hash = ( 'This' => 'is', 'a' => 'test' );
586 @ary = ( 0..5 );
587 {
588 local($ary[5]) = 6;
589 local($hash{'a'}) = 'drill';
590 while (my $e = pop(@ary)) {
591 print "$e . . .\n";
592 last unless $e > 3;
593 }
594 if (@ary) {
595 $hash{'only a'} = 'test';
596 delete $hash{'a'};
597 }
598 }
599 print join(' ', map { "$_ $hash{$_}" } sort keys %hash),".\n";
600 print "The array has ",scalar(@ary)," elements: ",
601 join(', ', map { defined $_ ? $_ : 'undef' } @ary),"\n";
602
603Perl will print
604
605 6 . . .
606 4 . . .
607 3 . . .
608 This is a test only a test.
609 The array has 6 elements: 0, 1, 2, undef, undef, 5
610
19799a22 611The behavior of local() on non-existent members of composite
7185e5cc
GS
612types is subject to change in future.
613
cd06dffe
GS
614=head2 Lvalue subroutines
615
616B<WARNING>: Lvalue subroutines are still experimental and the implementation
617may change in future versions of Perl.
618
619It is possible to return a modifiable value from a subroutine.
620To do this, you have to declare the subroutine to return an lvalue.
621
622 my $val;
623 sub canmod : lvalue {
624 $val;
625 }
626 sub nomod {
627 $val;
628 }
629
630 canmod() = 5; # assigns to $val
631 nomod() = 5; # ERROR
632
633The scalar/list context for the subroutine and for the right-hand
634side of assignment is determined as if the subroutine call is replaced
635by a scalar. For example, consider:
636
637 data(2,3) = get_data(3,4);
638
639Both subroutines here are called in a scalar context, while in:
640
641 (data(2,3)) = get_data(3,4);
642
643and in:
644
645 (data(2),data(3)) = get_data(3,4);
646
647all the subroutines are called in a list context.
648
649The current implementation does not allow arrays and hashes to be
650returned from lvalue subroutines directly. You may return a
651reference instead. This restriction may be lifted in future.
652
cb1a09d0
AD
653=head2 Passing Symbol Table Entries (typeglobs)
654
19799a22
GS
655B<WARNING>: The mechanism described in this section was originally
656the only way to simulate pass-by-reference in older versions of
657Perl. While it still works fine in modern versions, the new reference
658mechanism is generally easier to work with. See below.
a0d0e21e
LW
659
660Sometimes you don't want to pass the value of an array to a subroutine
661but rather the name of it, so that the subroutine can modify the global
662copy of it rather than working with a local copy. In perl you can
cb1a09d0 663refer to all objects of a particular name by prefixing the name
5f05dabc 664with a star: C<*foo>. This is often known as a "typeglob", because the
a0d0e21e
LW
665star on the front can be thought of as a wildcard match for all the
666funny prefix characters on variables and subroutines and such.
667
55497cff 668When evaluated, the typeglob produces a scalar value that represents
5f05dabc 669all the objects of that name, including any filehandle, format, or
a0d0e21e 670subroutine. When assigned to, it causes the name mentioned to refer to
19799a22 671whatever C<*> value was assigned to it. Example:
a0d0e21e
LW
672
673 sub doubleary {
674 local(*someary) = @_;
675 foreach $elem (@someary) {
676 $elem *= 2;
677 }
678 }
679 doubleary(*foo);
680 doubleary(*bar);
681
19799a22 682Scalars are already passed by reference, so you can modify
a0d0e21e 683scalar arguments without using this mechanism by referring explicitly
1fef88e7 684to C<$_[0]> etc. You can modify all the elements of an array by passing
f86cebdf
GS
685all the elements as scalars, but you have to use the C<*> mechanism (or
686the equivalent reference mechanism) to C<push>, C<pop>, or change the size of
a0d0e21e
LW
687an array. It will certainly be faster to pass the typeglob (or reference).
688
689Even if you don't want to modify an array, this mechanism is useful for
5f05dabc 690passing multiple arrays in a single LIST, because normally the LIST
a0d0e21e 691mechanism will merge all the array values so that you can't extract out
55497cff 692the individual arrays. For more on typeglobs, see
2ae324a7 693L<perldata/"Typeglobs and Filehandles">.
cb1a09d0 694
5a964f20
TC
695=head2 When to Still Use local()
696
19799a22
GS
697Despite the existence of C<my>, there are still three places where the
698C<local> operator still shines. In fact, in these three places, you
5a964f20
TC
699I<must> use C<local> instead of C<my>.
700
701=over
702
19799a22 703=item 1. You need to give a global variable a temporary value, especially $_.
5a964f20 704
f86cebdf
GS
705The global variables, like C<@ARGV> or the punctuation variables, must be
706C<local>ized with C<local()>. This block reads in F</etc/motd>, and splits
5a964f20 707it up into chunks separated by lines of equal signs, which are placed
f86cebdf 708in C<@Fields>.
5a964f20
TC
709
710 {
711 local @ARGV = ("/etc/motd");
712 local $/ = undef;
713 local $_ = <>;
714 @Fields = split /^\s*=+\s*$/;
715 }
716
19799a22 717It particular, it's important to C<local>ize $_ in any routine that assigns
5a964f20
TC
718to it. Look out for implicit assignments in C<while> conditionals.
719
720=item 2. You need to create a local file or directory handle or a local function.
721
09bef843
SB
722A function that needs a filehandle of its own must use
723C<local()> on a complete typeglob. This can be used to create new symbol
5a964f20
TC
724table entries:
725
726 sub ioqueue {
727 local (*READER, *WRITER); # not my!
728 pipe (READER, WRITER); or die "pipe: $!";
729 return (*READER, *WRITER);
730 }
731 ($head, $tail) = ioqueue();
732
733See the Symbol module for a way to create anonymous symbol table
734entries.
735
736Because assignment of a reference to a typeglob creates an alias, this
737can be used to create what is effectively a local function, or at least,
738a local alias.
739
740 {
f86cebdf
GS
741 local *grow = \&shrink; # only until this block exists
742 grow(); # really calls shrink()
743 move(); # if move() grow()s, it shrink()s too
5a964f20 744 }
f86cebdf 745 grow(); # get the real grow() again
5a964f20
TC
746
747See L<perlref/"Function Templates"> for more about manipulating
748functions by name in this way.
749
750=item 3. You want to temporarily change just one element of an array or hash.
751
f86cebdf 752You can C<local>ize just one element of an aggregate. Usually this
5a964f20
TC
753is done on dynamics:
754
755 {
756 local $SIG{INT} = 'IGNORE';
757 funct(); # uninterruptible
758 }
759 # interruptibility automatically restored here
760
761But it also works on lexically declared aggregates. Prior to 5.005,
762this operation could on occasion misbehave.
763
764=back
765
cb1a09d0
AD
766=head2 Pass by Reference
767
55497cff 768If you want to pass more than one array or hash into a function--or
769return them from it--and have them maintain their integrity, then
770you're going to have to use an explicit pass-by-reference. Before you
771do that, you need to understand references as detailed in L<perlref>.
c07a80fd 772This section may not make much sense to you otherwise.
cb1a09d0 773
19799a22
GS
774Here are a few simple examples. First, let's pass in several arrays
775to a function and have it C<pop> all of then, returning a new list
776of all their former last elements:
cb1a09d0
AD
777
778 @tailings = popmany ( \@a, \@b, \@c, \@d );
779
780 sub popmany {
781 my $aref;
782 my @retlist = ();
783 foreach $aref ( @_ ) {
784 push @retlist, pop @$aref;
54310121 785 }
cb1a09d0 786 return @retlist;
54310121 787 }
cb1a09d0 788
54310121 789Here's how you might write a function that returns a
cb1a09d0
AD
790list of keys occurring in all the hashes passed to it:
791
54310121 792 @common = inter( \%foo, \%bar, \%joe );
cb1a09d0
AD
793 sub inter {
794 my ($k, $href, %seen); # locals
795 foreach $href (@_) {
796 while ( $k = each %$href ) {
797 $seen{$k}++;
54310121 798 }
799 }
cb1a09d0 800 return grep { $seen{$_} == @_ } keys %seen;
54310121 801 }
cb1a09d0 802
5f05dabc 803So far, we're using just the normal list return mechanism.
54310121 804What happens if you want to pass or return a hash? Well,
805if you're using only one of them, or you don't mind them
cb1a09d0 806concatenating, then the normal calling convention is ok, although
54310121 807a little expensive.
cb1a09d0
AD
808
809Where people get into trouble is here:
810
811 (@a, @b) = func(@c, @d);
812or
813 (%a, %b) = func(%c, %d);
814
19799a22
GS
815That syntax simply won't work. It sets just C<@a> or C<%a> and
816clears the C<@b> or C<%b>. Plus the function didn't get passed
817into two separate arrays or hashes: it got one long list in C<@_>,
818as always.
cb1a09d0
AD
819
820If you can arrange for everyone to deal with this through references, it's
821cleaner code, although not so nice to look at. Here's a function that
822takes two array references as arguments, returning the two array elements
823in order of how many elements they have in them:
824
825 ($aref, $bref) = func(\@c, \@d);
826 print "@$aref has more than @$bref\n";
827 sub func {
828 my ($cref, $dref) = @_;
829 if (@$cref > @$dref) {
830 return ($cref, $dref);
831 } else {
c07a80fd 832 return ($dref, $cref);
54310121 833 }
834 }
cb1a09d0
AD
835
836It turns out that you can actually do this also:
837
838 (*a, *b) = func(\@c, \@d);
839 print "@a has more than @b\n";
840 sub func {
841 local (*c, *d) = @_;
842 if (@c > @d) {
843 return (\@c, \@d);
844 } else {
845 return (\@d, \@c);
54310121 846 }
847 }
cb1a09d0
AD
848
849Here we're using the typeglobs to do symbol table aliasing. It's
19799a22 850a tad subtle, though, and also won't work if you're using C<my>
09bef843 851variables, because only globals (even in disguise as C<local>s)
19799a22 852are in the symbol table.
5f05dabc 853
854If you're passing around filehandles, you could usually just use the bare
19799a22
GS
855typeglob, like C<*STDOUT>, but typeglobs references work, too.
856For example:
5f05dabc 857
858 splutter(\*STDOUT);
859 sub splutter {
860 my $fh = shift;
861 print $fh "her um well a hmmm\n";
862 }
863
864 $rec = get_rec(\*STDIN);
865 sub get_rec {
866 my $fh = shift;
867 return scalar <$fh>;
868 }
869
19799a22
GS
870If you're planning on generating new filehandles, you could do this.
871Notice to pass back just the bare *FH, not its reference.
5f05dabc 872
873 sub openit {
19799a22 874 my $path = shift;
5f05dabc 875 local *FH;
e05a3a1e 876 return open (FH, $path) ? *FH : undef;
54310121 877 }
5f05dabc 878
cb1a09d0
AD
879=head2 Prototypes
880
19799a22
GS
881Perl supports a very limited kind of compile-time argument checking
882using function prototyping. If you declare
cb1a09d0
AD
883
884 sub mypush (\@@)
885
19799a22
GS
886then C<mypush()> takes arguments exactly like C<push()> does. The
887function declaration must be visible at compile time. The prototype
888affects only interpretation of new-style calls to the function,
889where new-style is defined as not using the C<&> character. In
890other words, if you call it like a built-in function, then it behaves
891like a built-in function. If you call it like an old-fashioned
892subroutine, then it behaves like an old-fashioned subroutine. It
893naturally falls out from this rule that prototypes have no influence
894on subroutine references like C<\&foo> or on indirect subroutine
895calls like C<&{$subref}> or C<$subref-E<gt>()>.
c07a80fd 896
897Method calls are not influenced by prototypes either, because the
19799a22
GS
898function to be called is indeterminate at compile time, since
899the exact code called depends on inheritance.
cb1a09d0 900
19799a22
GS
901Because the intent of this feature is primarily to let you define
902subroutines that work like built-in functions, here are prototypes
903for some other functions that parse almost exactly like the
904corresponding built-in.
cb1a09d0
AD
905
906 Declared as Called as
907
f86cebdf
GS
908 sub mylink ($$) mylink $old, $new
909 sub myvec ($$$) myvec $var, $offset, 1
910 sub myindex ($$;$) myindex &getstring, "substr"
911 sub mysyswrite ($$$;$) mysyswrite $buf, 0, length($buf) - $off, $off
912 sub myreverse (@) myreverse $a, $b, $c
913 sub myjoin ($@) myjoin ":", $a, $b, $c
914 sub mypop (\@) mypop @array
915 sub mysplice (\@$$@) mysplice @array, @array, 0, @pushme
916 sub mykeys (\%) mykeys %{$hashref}
917 sub myopen (*;$) myopen HANDLE, $name
918 sub mypipe (**) mypipe READHANDLE, WRITEHANDLE
919 sub mygrep (&@) mygrep { /foo/ } $a, $b, $c
920 sub myrand ($) myrand 42
921 sub mytime () mytime
cb1a09d0 922
c07a80fd 923Any backslashed prototype character represents an actual argument
6e47f808 924that absolutely must start with that character. The value passed
19799a22
GS
925as part of C<@_> will be a reference to the actual argument given
926in the subroutine call, obtained by applying C<\> to that argument.
c07a80fd 927
928Unbackslashed prototype characters have special meanings. Any
19799a22 929unbackslashed C<@> or C<%> eats all remaining arguments, and forces
f86cebdf
GS
930list context. An argument represented by C<$> forces scalar context. An
931C<&> requires an anonymous subroutine, which, if passed as the first
19799a22 932argument, does not require the C<sub> keyword or a subsequent comma. A
648ca4f7
GS
933C<*> allows the subroutine to accept a bareword, constant, scalar expression,
934typeglob, or a reference to a typeglob in that slot. The value will be
935available to the subroutine either as a simple scalar, or (in the latter
936two cases) as a reference to the typeglob.
c07a80fd 937
938A semicolon separates mandatory arguments from optional arguments.
19799a22 939It is redundant before C<@> or C<%>, which gobble up everything else.
cb1a09d0 940
19799a22
GS
941Note how the last three examples in the table above are treated
942specially by the parser. C<mygrep()> is parsed as a true list
943operator, C<myrand()> is parsed as a true unary operator with unary
944precedence the same as C<rand()>, and C<mytime()> is truly without
945arguments, just like C<time()>. That is, if you say
cb1a09d0
AD
946
947 mytime +2;
948
f86cebdf 949you'll get C<mytime() + 2>, not C<mytime(2)>, which is how it would be parsed
19799a22 950without a prototype.
cb1a09d0 951
19799a22
GS
952The interesting thing about C<&> is that you can generate new syntax with it,
953provided it's in the initial position:
cb1a09d0 954
6d28dffb 955 sub try (&@) {
cb1a09d0
AD
956 my($try,$catch) = @_;
957 eval { &$try };
958 if ($@) {
959 local $_ = $@;
960 &$catch;
961 }
962 }
55497cff 963 sub catch (&) { $_[0] }
cb1a09d0
AD
964
965 try {
966 die "phooey";
967 } catch {
968 /phooey/ and print "unphooey\n";
969 };
970
f86cebdf 971That prints C<"unphooey">. (Yes, there are still unresolved
19799a22 972issues having to do with visibility of C<@_>. I'm ignoring that
f86cebdf 973question for the moment. (But note that if we make C<@_> lexically
cb1a09d0 974scoped, those anonymous subroutines can act like closures... (Gee,
5f05dabc 975is this sounding a little Lispish? (Never mind.))))
cb1a09d0 976
19799a22 977And here's a reimplementation of the Perl C<grep> operator:
cb1a09d0
AD
978
979 sub mygrep (&@) {
980 my $code = shift;
981 my @result;
982 foreach $_ (@_) {
6e47f808 983 push(@result, $_) if &$code;
cb1a09d0
AD
984 }
985 @result;
986 }
a0d0e21e 987
cb1a09d0
AD
988Some folks would prefer full alphanumeric prototypes. Alphanumerics have
989been intentionally left out of prototypes for the express purpose of
990someday in the future adding named, formal parameters. The current
991mechanism's main goal is to let module writers provide better diagnostics
992for module users. Larry feels the notation quite understandable to Perl
993programmers, and that it will not intrude greatly upon the meat of the
994module, nor make it harder to read. The line noise is visually
995encapsulated into a small pill that's easy to swallow.
996
997It's probably best to prototype new functions, not retrofit prototyping
998into older ones. That's because you must be especially careful about
999silent impositions of differing list versus scalar contexts. For example,
1000if you decide that a function should take just one parameter, like this:
1001
1002 sub func ($) {
1003 my $n = shift;
1004 print "you gave me $n\n";
54310121 1005 }
cb1a09d0
AD
1006
1007and someone has been calling it with an array or expression
1008returning a list:
1009
1010 func(@foo);
1011 func( split /:/ );
1012
19799a22 1013Then you've just supplied an automatic C<scalar> in front of their
f86cebdf 1014argument, which can be more than a bit surprising. The old C<@foo>
cb1a09d0 1015which used to hold one thing doesn't get passed in. Instead,
19799a22
GS
1016C<func()> now gets passed in a C<1>; that is, the number of elements
1017in C<@foo>. And the C<split> gets called in scalar context so it
1018starts scribbling on your C<@_> parameter list. Ouch!
cb1a09d0 1019
5f05dabc 1020This is all very powerful, of course, and should be used only in moderation
54310121 1021to make the world a better place.
44a8e56a 1022
1023=head2 Constant Functions
1024
1025Functions with a prototype of C<()> are potential candidates for
19799a22
GS
1026inlining. If the result after optimization and constant folding
1027is either a constant or a lexically-scoped scalar which has no other
54310121 1028references, then it will be used in place of function calls made
19799a22
GS
1029without C<&>. Calls made using C<&> are never inlined. (See
1030F<constant.pm> for an easy way to declare most constants.)
44a8e56a 1031
5a964f20 1032The following functions would all be inlined:
44a8e56a 1033
699e6cd4
TP
1034 sub pi () { 3.14159 } # Not exact, but close.
1035 sub PI () { 4 * atan2 1, 1 } # As good as it gets,
1036 # and it's inlined, too!
44a8e56a 1037 sub ST_DEV () { 0 }
1038 sub ST_INO () { 1 }
1039
1040 sub FLAG_FOO () { 1 << 8 }
1041 sub FLAG_BAR () { 1 << 9 }
1042 sub FLAG_MASK () { FLAG_FOO | FLAG_BAR }
54310121 1043
1044 sub OPT_BAZ () { not (0x1B58 & FLAG_MASK) }
44a8e56a 1045 sub BAZ_VAL () {
1046 if (OPT_BAZ) {
1047 return 23;
1048 }
1049 else {
1050 return 42;
1051 }
1052 }
cb1a09d0 1053
54310121 1054 sub N () { int(BAZ_VAL) / 3 }
1055 BEGIN {
1056 my $prod = 1;
1057 for (1..N) { $prod *= $_ }
1058 sub N_FACTORIAL () { $prod }
1059 }
1060
5a964f20 1061If you redefine a subroutine that was eligible for inlining, you'll get
4cee8e80
CS
1062a mandatory warning. (You can use this warning to tell whether or not a
1063particular subroutine is considered constant.) The warning is
1064considered severe enough not to be optional because previously compiled
1065invocations of the function will still be using the old value of the
19799a22 1066function. If you need to be able to redefine the subroutine, you need to
4cee8e80 1067ensure that it isn't inlined, either by dropping the C<()> prototype
19799a22 1068(which changes calling semantics, so beware) or by thwarting the
4cee8e80
CS
1069inlining mechanism in some other way, such as
1070
4cee8e80 1071 sub not_inlined () {
54310121 1072 23 if $];
4cee8e80
CS
1073 }
1074
19799a22 1075=head2 Overriding Built-in Functions
a0d0e21e 1076
19799a22 1077Many built-in functions may be overridden, though this should be tried
5f05dabc 1078only occasionally and for good reason. Typically this might be
19799a22 1079done by a package attempting to emulate missing built-in functionality
a0d0e21e
LW
1080on a non-Unix system.
1081
5f05dabc 1082Overriding may be done only by importing the name from a
a0d0e21e 1083module--ordinary predeclaration isn't good enough. However, the
19799a22
GS
1084C<use subs> pragma lets you, in effect, predeclare subs
1085via the import syntax, and these names may then override built-in ones:
a0d0e21e
LW
1086
1087 use subs 'chdir', 'chroot', 'chmod', 'chown';
1088 chdir $somewhere;
1089 sub chdir { ... }
1090
19799a22
GS
1091To unambiguously refer to the built-in form, precede the
1092built-in name with the special package qualifier C<CORE::>. For example,
1093saying C<CORE::open()> always refers to the built-in C<open()>, even
fb73857a 1094if the current package has imported some other subroutine called
19799a22 1095C<&open()> from elsewhere. Even though it looks like a regular
09bef843 1096function call, it isn't: you can't take a reference to it, such as
19799a22 1097the incorrect C<\&CORE::open> might appear to produce.
fb73857a 1098
19799a22
GS
1099Library modules should not in general export built-in names like C<open>
1100or C<chdir> as part of their default C<@EXPORT> list, because these may
a0d0e21e 1101sneak into someone else's namespace and change the semantics unexpectedly.
19799a22 1102Instead, if the module adds that name to C<@EXPORT_OK>, then it's
a0d0e21e
LW
1103possible for a user to import the name explicitly, but not implicitly.
1104That is, they could say
1105
1106 use Module 'open';
1107
19799a22 1108and it would import the C<open> override. But if they said
a0d0e21e
LW
1109
1110 use Module;
1111
19799a22 1112they would get the default imports without overrides.
a0d0e21e 1113
19799a22 1114The foregoing mechanism for overriding built-in is restricted, quite
95d94a4f 1115deliberately, to the package that requests the import. There is a second
19799a22 1116method that is sometimes applicable when you wish to override a built-in
95d94a4f
GS
1117everywhere, without regard to namespace boundaries. This is achieved by
1118importing a sub into the special namespace C<CORE::GLOBAL::>. Here is an
1119example that quite brazenly replaces the C<glob> operator with something
1120that understands regular expressions.
1121
1122 package REGlob;
1123 require Exporter;
1124 @ISA = 'Exporter';
1125 @EXPORT_OK = 'glob';
1126
1127 sub import {
1128 my $pkg = shift;
1129 return unless @_;
1130 my $sym = shift;
1131 my $where = ($sym =~ s/^GLOBAL_// ? 'CORE::GLOBAL' : caller(0));
1132 $pkg->export($where, $sym, @_);
1133 }
1134
1135 sub glob {
1136 my $pat = shift;
1137 my @got;
19799a22
GS
1138 local *D;
1139 if (opendir D, '.') {
1140 @got = grep /$pat/, readdir D;
1141 closedir D;
1142 }
1143 return @got;
95d94a4f
GS
1144 }
1145 1;
1146
1147And here's how it could be (ab)used:
1148
1149 #use REGlob 'GLOBAL_glob'; # override glob() in ALL namespaces
1150 package Foo;
1151 use REGlob 'glob'; # override glob() in Foo:: only
1152 print for <^[a-z_]+\.pm\$>; # show all pragmatic modules
1153
19799a22 1154The initial comment shows a contrived, even dangerous example.
95d94a4f 1155By overriding C<glob> globally, you would be forcing the new (and
19799a22 1156subversive) behavior for the C<glob> operator for I<every> namespace,
95d94a4f
GS
1157without the complete cognizance or cooperation of the modules that own
1158those namespaces. Naturally, this should be done with extreme caution--if
1159it must be done at all.
1160
1161The C<REGlob> example above does not implement all the support needed to
19799a22 1162cleanly override perl's C<glob> operator. The built-in C<glob> has
95d94a4f 1163different behaviors depending on whether it appears in a scalar or list
19799a22 1164context, but our C<REGlob> doesn't. Indeed, many perl built-in have such
95d94a4f
GS
1165context sensitive behaviors, and these must be adequately supported by
1166a properly written override. For a fully functional example of overriding
1167C<glob>, study the implementation of C<File::DosGlob> in the standard
1168library.
1169
a0d0e21e
LW
1170=head2 Autoloading
1171
19799a22
GS
1172If you call a subroutine that is undefined, you would ordinarily
1173get an immediate, fatal error complaining that the subroutine doesn't
1174exist. (Likewise for subroutines being used as methods, when the
1175method doesn't exist in any base class of the class's package.)
1176However, if an C<AUTOLOAD> subroutine is defined in the package or
1177packages used to locate the original subroutine, then that
1178C<AUTOLOAD> subroutine is called with the arguments that would have
1179been passed to the original subroutine. The fully qualified name
1180of the original subroutine magically appears in the global $AUTOLOAD
1181variable of the same package as the C<AUTOLOAD> routine. The name
1182is not passed as an ordinary argument because, er, well, just
1183because, that's why...
1184
1185Many C<AUTOLOAD> routines load in a definition for the requested
1186subroutine using eval(), then execute that subroutine using a special
1187form of goto() that erases the stack frame of the C<AUTOLOAD> routine
1188without a trace. (See the source to the standard module documented
1189in L<AutoLoader>, for example.) But an C<AUTOLOAD> routine can
1190also just emulate the routine and never define it. For example,
1191let's pretend that a function that wasn't defined should just invoke
1192C<system> with those arguments. All you'd do is:
cb1a09d0
AD
1193
1194 sub AUTOLOAD {
1195 my $program = $AUTOLOAD;
1196 $program =~ s/.*:://;
1197 system($program, @_);
54310121 1198 }
cb1a09d0 1199 date();
6d28dffb 1200 who('am', 'i');
cb1a09d0
AD
1201 ls('-l');
1202
19799a22
GS
1203In fact, if you predeclare functions you want to call that way, you don't
1204even need parentheses:
cb1a09d0
AD
1205
1206 use subs qw(date who ls);
1207 date;
1208 who "am", "i";
1209 ls -l;
1210
1211A more complete example of this is the standard Shell module, which
19799a22 1212can treat undefined subroutine calls as calls to external programs.
a0d0e21e 1213
19799a22
GS
1214Mechanisms are available to help modules writers split their modules
1215into autoloadable files. See the standard AutoLoader module
6d28dffb 1216described in L<AutoLoader> and in L<AutoSplit>, the standard
1217SelfLoader modules in L<SelfLoader>, and the document on adding C
19799a22 1218functions to Perl code in L<perlxs>.
cb1a09d0 1219
09bef843
SB
1220=head2 Subroutine Attributes
1221
1222A subroutine declaration or definition may have a list of attributes
1223associated with it. If such an attribute list is present, it is
1224broken up at space or comma boundaries and treated as though a
1225C<use attributes> had been seen. See L<attributes> for details
1226about what attributes are currently supported.
1227Unlike the limitation with the obsolescent C<use attrs>, the
1228C<sub : ATTRLIST> syntax works to associate the attributes with
1229a pre-declaration, and not just with a subroutine definition.
1230
1231The attributes must be valid as simple identifier names (without any
1232punctuation other than the '_' character). They may have a parameter
1233list appended, which is only checked for whether its parentheses ('(',')')
1234nest properly.
1235
1236Examples of valid syntax (even though the attributes are unknown):
1237
1238 sub fnord (&\%) : switch(10,foo(7,3)) , , expensive ;
1239 sub plugh () : Ugly('\(") , Bad ;
1240 sub xyzzy : _5x5 { ... }
1241
1242Examples of invalid syntax:
1243
1244 sub fnord : switch(10,foo() ; # ()-string not balanced
1245 sub snoid : Ugly('(') ; # ()-string not balanced
1246 sub xyzzy : 5x5 ; # "5x5" not a valid identifier
1247 sub plugh : Y2::north ; # "Y2::north" not a simple identifier
1248 sub snurt : foo + bar ; # "+" not a comma or space
1249
1250The attribute list is passed as a list of constant strings to the code
1251which associates them with the subroutine. In particular, the second example
1252of valid syntax above currently looks like this in terms of how it's
1253parsed and invoked:
1254
1255 use attributes __PACKAGE__, \&plugh, q[Ugly('\(")], 'Bad';
1256
1257For further details on attribute lists and their manipulation,
1258see L<attributes>.
1259
cb1a09d0 1260=head1 SEE ALSO
a0d0e21e 1261
19799a22
GS
1262See L<perlref/"Function Templates"> for more about references and closures.
1263See L<perlxs> if you'd like to learn about calling C subroutines from Perl.
1264See L<perlembed> if you'd like to learn about calling PErl subroutines from C.
1265See L<perlmod> to learn about bundling up your functions in separate files.
1266See L<perlmodlib> to learn what library modules come standard on your system.
1267See L<perltoot> to learn how to make object method calls.