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