1PERLSUB(1)             Perl Programmers Reference Guide             PERLSUB(1)
2
3
4

NAME

6       perlsub - Perl subroutines
7

SYNOPSIS

9       To declare subroutines:
10
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
15
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
20
21           use feature 'signatures';
22           sub NAME(SIG) BLOCK                    # with signature
23           sub NAME :ATTRS (SIG) BLOCK            # with signature, attributes
24           sub NAME :prototype(PROTO) (SIG) BLOCK # with signature, prototype
25
26       To define an anonymous subroutine at runtime:
27
28           $subref = sub BLOCK;                 # no proto
29           $subref = sub (PROTO) BLOCK;         # with proto
30           $subref = sub : ATTRS BLOCK;         # with attributes
31           $subref = sub (PROTO) : ATTRS BLOCK; # with proto and attributes
32
33           use feature 'signatures';
34           $subref = sub (SIG) BLOCK;           # with signature
35           $subref = sub : ATTRS(SIG) BLOCK;    # with signature, attributes
36
37       To import subroutines:
38
39           use MODULE qw(NAME1 NAME2 NAME3);
40
41       To call subroutines:
42
43           NAME(LIST);    # & is optional with parentheses.
44           NAME LIST;     # Parentheses optional if predeclared/imported.
45           &NAME(LIST);   # Circumvent prototypes.
46           &NAME;         # Makes current @_ visible to called subroutine.
47

DESCRIPTION

49       Like many languages, Perl provides for user-defined subroutines.  These
50       may be located anywhere in the main program, loaded in from other files
51       via the "do", "require", or "use" keywords, or generated on the fly
52       using "eval" or anonymous subroutines.  You can even call a function
53       indirectly using a variable containing its name or a CODE reference.
54
55       The Perl model for function call and return values is simple: all
56       functions are passed as parameters one single flat list of scalars, and
57       all functions likewise return to their caller one single flat list of
58       scalars.  Any arrays or hashes in these call and return lists will
59       collapse, losing their identities--but you may always use pass-by-
60       reference instead to avoid this.  Both call and return lists may
61       contain as many or as few scalar elements as you'd like.  (Often a
62       function without an explicit return statement is called a subroutine,
63       but there's really no difference from Perl's perspective.)
64
65       Any arguments passed in show up in the array @_.  (They may also show
66       up in lexical variables introduced by a signature; see "Signatures"
67       below.)  Therefore, if you called a function with two arguments, those
68       would be stored in $_[0] and $_[1].  The array @_ is a local array, but
69       its elements are aliases for the actual scalar parameters.  In
70       particular, if an element $_[0] is updated, the corresponding argument
71       is updated (or an error occurs if it is not updatable).  If an argument
72       is an array or hash element which did not exist when the function was
73       called, that element is created only when (and if) it is modified or a
74       reference to it is taken.  (Some earlier versions of Perl created the
75       element whether or not the element was assigned to.)  Assigning to the
76       whole array @_ removes that aliasing, and does not update any
77       arguments.
78
79       A "return" statement may be used to exit a subroutine, optionally
80       specifying the returned value, which will be evaluated in the
81       appropriate context (list, scalar, or void) depending on the context of
82       the subroutine call.  If you specify no return value, the subroutine
83       returns an empty list in list context, the undefined value in scalar
84       context, or nothing in void context.  If you return one or more
85       aggregates (arrays and hashes), these will be flattened together into
86       one large indistinguishable list.
87
88       If no "return" is found and if the last statement is an expression, its
89       value is returned.  If the last statement is a loop control structure
90       like a "foreach" or a "while", the returned value is unspecified.  The
91       empty sub returns the empty list.
92
93       Aside from an experimental facility (see "Signatures" below), Perl does
94       not have named formal parameters.  In practice all you do is assign to
95       a "my()" list of these.  Variables that aren't declared to be private
96       are global variables.  For gory details on creating private variables,
97       see "Private Variables via my()" and "Temporary Values via local()".
98       To create protected environments for a set of functions in a separate
99       package (and probably a separate file), see "Packages" in perlmod.
100
101       Example:
102
103           sub max {
104               my $max = shift(@_);
105               foreach $foo (@_) {
106                   $max = $foo if $max < $foo;
107               }
108               return $max;
109           }
110           $bestday = max($mon,$tue,$wed,$thu,$fri);
111
112       Example:
113
114           # get a line, combining continuation lines
115           #  that start with whitespace
116
117           sub get_line {
118               $thisline = $lookahead;  # global variables!
119               LINE: while (defined($lookahead = <STDIN>)) {
120                   if ($lookahead =~ /^[ \t]/) {
121                       $thisline .= $lookahead;
122                   }
123                   else {
124                       last LINE;
125                   }
126               }
127               return $thisline;
128           }
129
130           $lookahead = <STDIN>;       # get first line
131           while (defined($line = get_line())) {
132               ...
133           }
134
135       Assigning to a list of private variables to name your arguments:
136
137           sub maybeset {
138               my($key, $value) = @_;
139               $Foo{$key} = $value unless $Foo{$key};
140           }
141
142       Because the assignment copies the values, this also has the effect of
143       turning call-by-reference into call-by-value.  Otherwise a function is
144       free to do in-place modifications of @_ and change its caller's values.
145
146           upcase_in($v1, $v2);  # this changes $v1 and $v2
147           sub upcase_in {
148               for (@_) { tr/a-z/A-Z/ }
149           }
150
151       You aren't allowed to modify constants in this way, of course.  If an
152       argument were actually literal and you tried to change it, you'd take a
153       (presumably fatal) exception.   For example, this won't work:
154
155           upcase_in("frederick");
156
157       It would be much safer if the "upcase_in()" function were written to
158       return a copy of its parameters instead of changing them in place:
159
160           ($v3, $v4) = upcase($v1, $v2);  # this doesn't change $v1 and $v2
161           sub upcase {
162               return unless defined wantarray;  # void context, do nothing
163               my @parms = @_;
164               for (@parms) { tr/a-z/A-Z/ }
165               return wantarray ? @parms : $parms[0];
166           }
167
168       Notice how this (unprototyped) function doesn't care whether it was
169       passed real scalars or arrays.  Perl sees all arguments as one big,
170       long, flat parameter list in @_.  This is one area where Perl's simple
171       argument-passing style shines.  The "upcase()" function would work
172       perfectly well without changing the "upcase()" definition even if we
173       fed it things like this:
174
175           @newlist   = upcase(@list1, @list2);
176           @newlist   = upcase( split /:/, $var );
177
178       Do not, however, be tempted to do this:
179
180           (@a, @b)   = upcase(@list1, @list2);
181
182       Like the flattened incoming parameter list, the return list is also
183       flattened on return.  So all you have managed to do here is stored
184       everything in @a and made @b empty.  See "Pass by Reference" for
185       alternatives.
186
187       A subroutine may be called using an explicit "&" prefix.  The "&" is
188       optional in modern Perl, as are parentheses if the subroutine has been
189       predeclared.  The "&" is not optional when just naming the subroutine,
190       such as when it's used as an argument to defined() or undef().  Nor is
191       it optional when you want to do an indirect subroutine call with a
192       subroutine name or reference using the "&$subref()" or "&{$subref}()"
193       constructs, although the "$subref->()" notation solves that problem.
194       See perlref for more about all that.
195
196       Subroutines may be called recursively.  If a subroutine is called using
197       the "&" form, the argument list is optional, and if omitted, no @_
198       array is set up for the subroutine: the @_ array at the time of the
199       call is visible to subroutine instead.  This is an efficiency mechanism
200       that new users may wish to avoid.
201
202           &foo(1,2,3);        # pass three arguments
203           foo(1,2,3);         # the same
204
205           foo();              # pass a null list
206           &foo();             # the same
207
208           &foo;               # foo() get current args, like foo(@_) !!
209           foo;                # like foo() IFF sub foo predeclared, else "foo"
210
211       Not only does the "&" form make the argument list optional, it also
212       disables any prototype checking on arguments you do provide.  This is
213       partly for historical reasons, and partly for having a convenient way
214       to cheat if you know what you're doing.  See "Prototypes" below.
215
216       Since Perl 5.16.0, the "__SUB__" token is available under "use feature
217       'current_sub'" and "use 5.16.0".  It will evaluate to a reference to
218       the currently-running sub, which allows for recursive calls without
219       knowing your subroutine's name.
220
221           use 5.16.0;
222           my $factorial = sub {
223             my ($x) = @_;
224             return 1 if $x == 1;
225             return($x * __SUB__->( $x - 1 ) );
226           };
227
228       The behavior of "__SUB__" within a regex code block (such as
229       "/(?{...})/") is subject to change.
230
231       Subroutines whose names are in all upper case are reserved to the Perl
232       core, as are modules whose names are in all lower case.  A subroutine
233       in all capitals is a loosely-held convention meaning it will be called
234       indirectly by the run-time system itself, usually due to a triggered
235       event.  Subroutines whose name start with a left parenthesis are also
236       reserved the same way.  The following is a list of some subroutines
237       that currently do special, pre-defined things.
238
239       documented later in this document
240           "AUTOLOAD"
241
242       documented in perlmod
243           "CLONE", "CLONE_SKIP"
244
245       documented in perlobj
246           "DESTROY", "DOES"
247
248       documented in perltie
249           "BINMODE", "CLEAR", "CLOSE", "DELETE", "DESTROY", "EOF", "EXISTS",
250           "EXTEND", "FETCH", "FETCHSIZE", "FILENO", "FIRSTKEY", "GETC",
251           "NEXTKEY", "OPEN", "POP", "PRINT", "PRINTF", "PUSH", "READ",
252           "READLINE", "SCALAR", "SEEK", "SHIFT", "SPLICE", "STORE",
253           "STORESIZE", "TELL", "TIEARRAY", "TIEHANDLE", "TIEHASH",
254           "TIESCALAR", "UNSHIFT", "UNTIE", "WRITE"
255
256       documented in PerlIO::via
257           "BINMODE", "CLEARERR", "CLOSE", "EOF", "ERROR", "FDOPEN", "FILENO",
258           "FILL", "FLUSH", "OPEN", "POPPED", "PUSHED", "READ", "SEEK",
259           "SETLINEBUF", "SYSOPEN", "TELL", "UNREAD", "UTF8", "WRITE"
260
261       documented in perlfunc
262           "import" , "unimport" , "INC"
263
264       documented in UNIVERSAL
265           "VERSION"
266
267       documented in perldebguts
268           "DB::DB", "DB::sub", "DB::lsub", "DB::goto", "DB::postponed"
269
270       undocumented, used internally by the overload feature
271           any starting with "("
272
273       The "BEGIN", "UNITCHECK", "CHECK", "INIT" and "END" subroutines are not
274       so much subroutines as named special code blocks, of which you can have
275       more than one in a package, and which you can not call explicitly.  See
276       "BEGIN, UNITCHECK, CHECK, INIT and END" in perlmod
277
278   Signatures
279       WARNING: Subroutine signatures are experimental.  The feature may be
280       modified or removed in future versions of Perl.
281
282       Perl has an experimental facility to allow a subroutine's formal
283       parameters to be introduced by special syntax, separate from the
284       procedural code of the subroutine body.  The formal parameter list is
285       known as a signature.  The facility must be enabled first by a
286       pragmatic declaration, "use feature 'signatures'", and it will produce
287       a warning unless the "experimental::signatures" warnings category is
288       disabled.
289
290       The signature is part of a subroutine's body.  Normally the body of a
291       subroutine is simply a braced block of code, but when using a
292       signature, the signature is a parenthesised list that goes immediately
293       before the block, after any name or attributes.
294
295       For example,
296
297           sub foo :lvalue ($a, $b = 1, @c) { .... }
298
299       The signature declares lexical variables that are in scope for the
300       block.  When the subroutine is called, the signature takes control
301       first.  It populates the signature variables from the list of arguments
302       that were passed.  If the argument list doesn't meet the requirements
303       of the signature, then it will throw an exception.  When the signature
304       processing is complete, control passes to the block.
305
306       Positional parameters are handled by simply naming scalar variables in
307       the signature.  For example,
308
309           sub foo ($left, $right) {
310               return $left + $right;
311           }
312
313       takes two positional parameters, which must be filled at runtime by two
314       arguments.  By default the parameters are mandatory, and it is not
315       permitted to pass more arguments than expected.  So the above is
316       equivalent to
317
318           sub foo {
319               die "Too many arguments for subroutine" unless @_ <= 2;
320               die "Too few arguments for subroutine" unless @_ >= 2;
321               my $left = $_[0];
322               my $right = $_[1];
323               return $left + $right;
324           }
325
326       An argument can be ignored by omitting the main part of the name from a
327       parameter declaration, leaving just a bare "$" sigil.  For example,
328
329           sub foo ($first, $, $third) {
330               return "first=$first, third=$third";
331           }
332
333       Although the ignored argument doesn't go into a variable, it is still
334       mandatory for the caller to pass it.
335
336       A positional parameter is made optional by giving a default value,
337       separated from the parameter name by "=":
338
339           sub foo ($left, $right = 0) {
340               return $left + $right;
341           }
342
343       The above subroutine may be called with either one or two arguments.
344       The default value expression is evaluated when the subroutine is
345       called, so it may provide different default values for different calls.
346       It is only evaluated if the argument was actually omitted from the
347       call.  For example,
348
349           my $auto_id = 0;
350           sub foo ($thing, $id = $auto_id++) {
351               print "$thing has ID $id";
352           }
353
354       automatically assigns distinct sequential IDs to things for which no ID
355       was supplied by the caller.  A default value expression may also refer
356       to parameters earlier in the signature, making the default for one
357       parameter vary according to the earlier parameters.  For example,
358
359           sub foo ($first_name, $surname, $nickname = $first_name) {
360               print "$first_name $surname is known as \"$nickname\"";
361           }
362
363       An optional parameter can be nameless just like a mandatory parameter.
364       For example,
365
366           sub foo ($thing, $ = 1) {
367               print $thing;
368           }
369
370       The parameter's default value will still be evaluated if the
371       corresponding argument isn't supplied, even though the value won't be
372       stored anywhere.  This is in case evaluating it has important side
373       effects.  However, it will be evaluated in void context, so if it
374       doesn't have side effects and is not trivial it will generate a warning
375       if the "void" warning category is enabled.  If a nameless optional
376       parameter's default value is not important, it may be omitted just as
377       the parameter's name was:
378
379           sub foo ($thing, $=) {
380               print $thing;
381           }
382
383       Optional positional parameters must come after all mandatory positional
384       parameters.  (If there are no mandatory positional parameters then an
385       optional positional parameters can be the first thing in the
386       signature.)  If there are multiple optional positional parameters and
387       not enough arguments are supplied to fill them all, they will be filled
388       from left to right.
389
390       After positional parameters, additional arguments may be captured in a
391       slurpy parameter.  The simplest form of this is just an array variable:
392
393           sub foo ($filter, @inputs) {
394               print $filter->($_) foreach @inputs;
395           }
396
397       With a slurpy parameter in the signature, there is no upper limit on
398       how many arguments may be passed.  A slurpy array parameter may be
399       nameless just like a positional parameter, in which case its only
400       effect is to turn off the argument limit that would otherwise apply:
401
402           sub foo ($thing, @) {
403               print $thing;
404           }
405
406       A slurpy parameter may instead be a hash, in which case the arguments
407       available to it are interpreted as alternating keys and values.  There
408       must be as many keys as values: if there is an odd argument then an
409       exception will be thrown.  Keys will be stringified, and if there are
410       duplicates then the later instance takes precedence over the earlier,
411       as with standard hash construction.
412
413           sub foo ($filter, %inputs) {
414               print $filter->($_, $inputs{$_}) foreach sort keys %inputs;
415           }
416
417       A slurpy hash parameter may be nameless just like other kinds of
418       parameter.  It still insists that the number of arguments available to
419       it be even, even though they're not being put into a variable.
420
421           sub foo ($thing, %) {
422               print $thing;
423           }
424
425       A slurpy parameter, either array or hash, must be the last thing in the
426       signature.  It may follow mandatory and optional positional parameters;
427       it may also be the only thing in the signature.  Slurpy parameters
428       cannot have default values: if no arguments are supplied for them then
429       you get an empty array or empty hash.
430
431       A signature may be entirely empty, in which case all it does is check
432       that the caller passed no arguments:
433
434           sub foo () {
435               return 123;
436           }
437
438       When using a signature, the arguments are still available in the
439       special array variable @_, in addition to the lexical variables of the
440       signature.  There is a difference between the two ways of accessing the
441       arguments: @_ aliases the arguments, but the signature variables get
442       copies of the arguments.  So writing to a signature variable only
443       changes that variable, and has no effect on the caller's variables, but
444       writing to an element of @_ modifies whatever the caller used to supply
445       that argument.
446
447       There is a potential syntactic ambiguity between signatures and
448       prototypes (see "Prototypes"), because both start with an opening
449       parenthesis and both can appear in some of the same places, such as
450       just after the name in a subroutine declaration.  For historical
451       reasons, when signatures are not enabled, any opening parenthesis in
452       such a context will trigger very forgiving prototype parsing.  Most
453       signatures will be interpreted as prototypes in those circumstances,
454       but won't be valid prototypes.  (A valid prototype cannot contain any
455       alphabetic character.)  This will lead to somewhat confusing error
456       messages.
457
458       To avoid ambiguity, when signatures are enabled the special syntax for
459       prototypes is disabled.  There is no attempt to guess whether a
460       parenthesised group was intended to be a prototype or a signature.  To
461       give a subroutine a prototype under these circumstances, use a
462       prototype attribute.  For example,
463
464           sub foo :prototype($) { $_[0] }
465
466       It is entirely possible for a subroutine to have both a prototype and a
467       signature.  They do different jobs: the prototype affects compilation
468       of calls to the subroutine, and the signature puts argument values into
469       lexical variables at runtime.  You can therefore write
470
471           sub foo :prototype($$) ($left, $right) {
472               return $left + $right;
473           }
474
475       The prototype attribute, and any other attributes, must come before the
476       signature.  The signature always immediately precedes the block of the
477       subroutine's body.
478
479   Private Variables via my()
480       Synopsis:
481
482           my $foo;            # declare $foo lexically local
483           my (@wid, %get);    # declare list of variables local
484           my $foo = "flurp";  # declare $foo lexical, and init it
485           my @oof = @bar;     # declare @oof lexical, and init it
486           my $x : Foo = $y;   # similar, with an attribute applied
487
488       WARNING: The use of attribute lists on "my" declarations is still
489       evolving.  The current semantics and interface are subject to change.
490       See attributes and Attribute::Handlers.
491
492       The "my" operator declares the listed variables to be lexically
493       confined to the enclosing block, conditional
494       ("if"/"unless"/"elsif"/"else"), loop
495       ("for"/"foreach"/"while"/"until"/"continue"), subroutine, "eval", or
496       "do"/"require"/"use"'d file.  If more than one value is listed, the
497       list must be placed in parentheses.  All listed elements must be legal
498       lvalues.  Only alphanumeric identifiers may be lexically
499       scoped--magical built-ins like $/ must currently be "local"ized with
500       "local" instead.
501
502       Unlike dynamic variables created by the "local" operator, lexical
503       variables declared with "my" are totally hidden from the outside world,
504       including any called subroutines.  This is true if it's the same
505       subroutine called from itself or elsewhere--every call gets its own
506       copy.
507
508       This doesn't mean that a "my" variable declared in a statically
509       enclosing lexical scope would be invisible.  Only dynamic scopes are
510       cut off.   For example, the "bumpx()" function below has access to the
511       lexical $x variable because both the "my" and the "sub" occurred at the
512       same scope, presumably file scope.
513
514           my $x = 10;
515           sub bumpx { $x++ }
516
517       An "eval()", however, can see lexical variables of the scope it is
518       being evaluated in, so long as the names aren't hidden by declarations
519       within the "eval()" itself.  See perlref.
520
521       The parameter list to my() may be assigned to if desired, which allows
522       you to initialize your variables.  (If no initializer is given for a
523       particular variable, it is created with the undefined value.)  Commonly
524       this is used to name input parameters to a subroutine.  Examples:
525
526           $arg = "fred";        # "global" variable
527           $n = cube_root(27);
528           print "$arg thinks the root is $n\n";
529        fred thinks the root is 3
530
531           sub cube_root {
532               my $arg = shift;  # name doesn't matter
533               $arg **= 1/3;
534               return $arg;
535           }
536
537       The "my" is simply a modifier on something you might assign to.  So
538       when you do assign to variables in its argument list, "my" doesn't
539       change whether those variables are viewed as a scalar or an array.  So
540
541           my ($foo) = <STDIN>;                # WRONG?
542           my @FOO = <STDIN>;
543
544       both supply a list context to the right-hand side, while
545
546           my $foo = <STDIN>;
547
548       supplies a scalar context.  But the following declares only one
549       variable:
550
551           my $foo, $bar = 1;                  # WRONG
552
553       That has the same effect as
554
555           my $foo;
556           $bar = 1;
557
558       The declared variable is not introduced (is not visible) until after
559       the current statement.  Thus,
560
561           my $x = $x;
562
563       can be used to initialize a new $x with the value of the old $x, and
564       the expression
565
566           my $x = 123 and $x == 123
567
568       is false unless the old $x happened to have the value 123.
569
570       Lexical scopes of control structures are not bounded precisely by the
571       braces that delimit their controlled blocks; control expressions are
572       part of that scope, too.  Thus in the loop
573
574           while (my $line = <>) {
575               $line = lc $line;
576           } continue {
577               print $line;
578           }
579
580       the scope of $line extends from its declaration throughout the rest of
581       the loop construct (including the "continue" clause), but not beyond
582       it.  Similarly, in the conditional
583
584           if ((my $answer = <STDIN>) =~ /^yes$/i) {
585               user_agrees();
586           } elsif ($answer =~ /^no$/i) {
587               user_disagrees();
588           } else {
589               chomp $answer;
590               die "'$answer' is neither 'yes' nor 'no'";
591           }
592
593       the scope of $answer extends from its declaration through the rest of
594       that conditional, including any "elsif" and "else" clauses, but not
595       beyond it.  See "Simple Statements" in perlsyn for information on the
596       scope of variables in statements with modifiers.
597
598       The "foreach" loop defaults to scoping its index variable dynamically
599       in the manner of "local".  However, if the index variable is prefixed
600       with the keyword "my", or if there is already a lexical by that name in
601       scope, then a new lexical is created instead.  Thus in the loop
602
603           for my $i (1, 2, 3) {
604               some_function();
605           }
606
607       the scope of $i extends to the end of the loop, but not beyond it,
608       rendering the value of $i inaccessible within "some_function()".
609
610       Some users may wish to encourage the use of lexically scoped variables.
611       As an aid to catching implicit uses to package variables, which are
612       always global, if you say
613
614           use strict 'vars';
615
616       then any variable mentioned from there to the end of the enclosing
617       block must either refer to a lexical variable, be predeclared via "our"
618       or "use vars", or else must be fully qualified with the package name.
619       A compilation error results otherwise.  An inner block may countermand
620       this with "no strict 'vars'".
621
622       A "my" has both a compile-time and a run-time effect.  At compile time,
623       the compiler takes notice of it.  The principal usefulness of this is
624       to quiet "use strict 'vars'", but it is also essential for generation
625       of closures as detailed in perlref.  Actual initialization is delayed
626       until run time, though, so it gets executed at the appropriate time,
627       such as each time through a loop, for example.
628
629       Variables declared with "my" are not part of any package and are
630       therefore never fully qualified with the package name.  In particular,
631       you're not allowed to try to make a package variable (or other global)
632       lexical:
633
634           my $pack::var;      # ERROR!  Illegal syntax
635
636       In fact, a dynamic variable (also known as package or global variables)
637       are still accessible using the fully qualified "::" notation even while
638       a lexical of the same name is also visible:
639
640           package main;
641           local $x = 10;
642           my    $x = 20;
643           print "$x and $::x\n";
644
645       That will print out 20 and 10.
646
647       You may declare "my" variables at the outermost scope of a file to hide
648       any such identifiers from the world outside that file.  This is similar
649       in spirit to C's static variables when they are used at the file level.
650       To do this with a subroutine requires the use of a closure (an
651       anonymous function that accesses enclosing lexicals).  If you want to
652       create a private subroutine that cannot be called from outside that
653       block, it can declare a lexical variable containing an anonymous sub
654       reference:
655
656           my $secret_version = '1.001-beta';
657           my $secret_sub = sub { print $secret_version };
658           &$secret_sub();
659
660       As long as the reference is never returned by any function within the
661       module, no outside module can see the subroutine, because its name is
662       not in any package's symbol table.  Remember that it's not REALLY
663       called $some_pack::secret_version or anything; it's just
664       $secret_version, unqualified and unqualifiable.
665
666       This does not work with object methods, however; all object methods
667       have to be in the symbol table of some package to be found.  See
668       "Function Templates" in perlref for something of a work-around to this.
669
670   Persistent Private Variables
671       There are two ways to build persistent private variables in Perl 5.10.
672       First, you can simply use the "state" feature.  Or, you can use
673       closures, if you want to stay compatible with releases older than 5.10.
674
675       Persistent variables via state()
676
677       Beginning with Perl 5.10.0, you can declare variables with the "state"
678       keyword in place of "my".  For that to work, though, you must have
679       enabled that feature beforehand, either by using the "feature" pragma,
680       or by using "-E" on one-liners (see feature).  Beginning with Perl
681       5.16, the "CORE::state" form does not require the "feature" pragma.
682
683       The "state" keyword creates a lexical variable (following the same
684       scoping rules as "my") that persists from one subroutine call to the
685       next.  If a state variable resides inside an anonymous subroutine, then
686       each copy of the subroutine has its own copy of the state variable.
687       However, the value of the state variable will still persist between
688       calls to the same copy of the anonymous subroutine.  (Don't forget that
689       "sub { ... }" creates a new subroutine each time it is executed.)
690
691       For example, the following code maintains a private counter,
692       incremented each time the gimme_another() function is called:
693
694           use feature 'state';
695           sub gimme_another { state $x; return ++$x }
696
697       And this example uses anonymous subroutines to create separate
698       counters:
699
700           use feature 'state';
701           sub create_counter {
702               return sub { state $x; return ++$x }
703           }
704
705       Also, since $x is lexical, it can't be reached or modified by any Perl
706       code outside.
707
708       When combined with variable declaration, simple assignment to "state"
709       variables (as in "state $x = 42") is executed only the first time.
710       When such statements are evaluated subsequent times, the assignment is
711       ignored.  The behavior of assignment to "state" declarations where the
712       left hand side of the assignment involves any parentheses is currently
713       undefined.
714
715       Persistent variables with closures
716
717       Just because a lexical variable is lexically (also called statically)
718       scoped to its enclosing block, "eval", or "do" FILE, this doesn't mean
719       that within a function it works like a C static.  It normally works
720       more like a C auto, but with implicit garbage collection.
721
722       Unlike local variables in C or C++, Perl's lexical variables don't
723       necessarily get recycled just because their scope has exited.  If
724       something more permanent is still aware of the lexical, it will stick
725       around.  So long as something else references a lexical, that lexical
726       won't be freed--which is as it should be.  You wouldn't want memory
727       being free until you were done using it, or kept around once you were
728       done.  Automatic garbage collection takes care of this for you.
729
730       This means that you can pass back or save away references to lexical
731       variables, whereas to return a pointer to a C auto is a grave error.
732       It also gives us a way to simulate C's function statics.  Here's a
733       mechanism for giving a function private variables with both lexical
734       scoping and a static lifetime.  If you do want to create something like
735       C's static variables, just enclose the whole function in an extra
736       block, and put the static variable outside the function but in the
737       block.
738
739           {
740               my $secret_val = 0;
741               sub gimme_another {
742                   return ++$secret_val;
743               }
744           }
745           # $secret_val now becomes unreachable by the outside
746           # world, but retains its value between calls to gimme_another
747
748       If this function is being sourced in from a separate file via "require"
749       or "use", then this is probably just fine.  If it's all in the main
750       program, you'll need to arrange for the "my" to be executed early,
751       either by putting the whole block above your main program, or more
752       likely, placing merely a "BEGIN" code block around it to make sure it
753       gets executed before your program starts to run:
754
755           BEGIN {
756               my $secret_val = 0;
757               sub gimme_another {
758                   return ++$secret_val;
759               }
760           }
761
762       See "BEGIN, UNITCHECK, CHECK, INIT and END" in perlmod about the
763       special triggered code blocks, "BEGIN", "UNITCHECK", "CHECK", "INIT"
764       and "END".
765
766       If declared at the outermost scope (the file scope), then lexicals work
767       somewhat like C's file statics.  They are available to all functions in
768       that same file declared below them, but are inaccessible from outside
769       that file.  This strategy is sometimes used in modules to create
770       private variables that the whole module can see.
771
772   Temporary Values via local()
773       WARNING: In general, you should be using "my" instead of "local",
774       because it's faster and safer.  Exceptions to this include the global
775       punctuation variables, global filehandles and formats, and direct
776       manipulation of the Perl symbol table itself.  "local" is mostly used
777       when the current value of a variable must be visible to called
778       subroutines.
779
780       Synopsis:
781
782           # localization of values
783
784           local $foo;                # make $foo dynamically local
785           local (@wid, %get);        # make list of variables local
786           local $foo = "flurp";      # make $foo dynamic, and init it
787           local @oof = @bar;         # make @oof dynamic, and init it
788
789           local $hash{key} = "val";  # sets a local value for this hash entry
790           delete local $hash{key};   # delete this entry for the current block
791           local ($cond ? $v1 : $v2); # several types of lvalues support
792                                      # localization
793
794           # localization of symbols
795
796           local *FH;                 # localize $FH, @FH, %FH, &FH  ...
797           local *merlyn = *randal;   # now $merlyn is really $randal, plus
798                                      #     @merlyn is really @randal, etc
799           local *merlyn = 'randal';  # SAME THING: promote 'randal' to *randal
800           local *merlyn = \$randal;  # just alias $merlyn, not @merlyn etc
801
802       A "local" modifies its listed variables to be "local" to the enclosing
803       block, "eval", or "do FILE"--and to any subroutine called from within
804       that block.  A "local" just gives temporary values to global (meaning
805       package) variables.  It does not create a local variable.  This is
806       known as dynamic scoping.  Lexical scoping is done with "my", which
807       works more like C's auto declarations.
808
809       Some types of lvalues can be localized as well: hash and array elements
810       and slices, conditionals (provided that their result is always
811       localizable), and symbolic references.  As for simple variables, this
812       creates new, dynamically scoped values.
813
814       If more than one variable or expression is given to "local", they must
815       be placed in parentheses.  This operator works by saving the current
816       values of those variables in its argument list on a hidden stack and
817       restoring them upon exiting the block, subroutine, or eval.  This means
818       that called subroutines can also reference the local variable, but not
819       the global one.  The argument list may be assigned to if desired, which
820       allows you to initialize your local variables.  (If no initializer is
821       given for a particular variable, it is created with an undefined
822       value.)
823
824       Because "local" is a run-time operator, it gets executed each time
825       through a loop.  Consequently, it's more efficient to localize your
826       variables outside the loop.
827
828       Grammatical note on local()
829
830       A "local" is simply a modifier on an lvalue expression.  When you
831       assign to a "local"ized variable, the "local" doesn't change whether
832       its list is viewed as a scalar or an array.  So
833
834           local($foo) = <STDIN>;
835           local @FOO = <STDIN>;
836
837       both supply a list context to the right-hand side, while
838
839           local $foo = <STDIN>;
840
841       supplies a scalar context.
842
843       Localization of special variables
844
845       If you localize a special variable, you'll be giving a new value to it,
846       but its magic won't go away.  That means that all side-effects related
847       to this magic still work with the localized value.
848
849       This feature allows code like this to work :
850
851           # Read the whole contents of FILE in $slurp
852           { local $/ = undef; $slurp = <FILE>; }
853
854       Note, however, that this restricts localization of some values ; for
855       example, the following statement dies, as of perl 5.10.0, with an error
856       Modification of a read-only value attempted, because the $1 variable is
857       magical and read-only :
858
859           local $1 = 2;
860
861       One exception is the default scalar variable: starting with perl 5.14
862       "local($_)" will always strip all magic from $_, to make it possible to
863       safely reuse $_ in a subroutine.
864
865       WARNING: Localization of tied arrays and hashes does not currently work
866       as described.  This will be fixed in a future release of Perl; in the
867       meantime, avoid code that relies on any particular behavior of
868       localising tied arrays or hashes (localising individual elements is
869       still okay).  See "Localising Tied Arrays and Hashes Is Broken" in
870       perl58delta for more details.
871
872       Localization of globs
873
874       The construct
875
876           local *name;
877
878       creates a whole new symbol table entry for the glob "name" in the
879       current package.  That means that all variables in its glob slot
880       ($name, @name, %name, &name, and the "name" filehandle) are dynamically
881       reset.
882
883       This implies, among other things, that any magic eventually carried by
884       those variables is locally lost.  In other words, saying "local */"
885       will not have any effect on the internal value of the input record
886       separator.
887
888       Localization of elements of composite types
889
890       It's also worth taking a moment to explain what happens when you
891       "local"ize a member of a composite type (i.e. an array or hash
892       element).  In this case, the element is "local"ized by name.  This
893       means that when the scope of the "local()" ends, the saved value will
894       be restored to the hash element whose key was named in the "local()",
895       or the array element whose index was named in the "local()".  If that
896       element was deleted while the "local()" was in effect (e.g. by a
897       "delete()" from a hash or a "shift()" of an array), it will spring back
898       into existence, possibly extending an array and filling in the skipped
899       elements with "undef".  For instance, if you say
900
901           %hash = ( 'This' => 'is', 'a' => 'test' );
902           @ary  = ( 0..5 );
903           {
904                local($ary[5]) = 6;
905                local($hash{'a'}) = 'drill';
906                while (my $e = pop(@ary)) {
907                    print "$e . . .\n";
908                    last unless $e > 3;
909                }
910                if (@ary) {
911                    $hash{'only a'} = 'test';
912                    delete $hash{'a'};
913                }
914           }
915           print join(' ', map { "$_ $hash{$_}" } sort keys %hash),".\n";
916           print "The array has ",scalar(@ary)," elements: ",
917                 join(', ', map { defined $_ ? $_ : 'undef' } @ary),"\n";
918
919       Perl will print
920
921           6 . . .
922           4 . . .
923           3 . . .
924           This is a test only a test.
925           The array has 6 elements: 0, 1, 2, undef, undef, 5
926
927       The behavior of local() on non-existent members of composite types is
928       subject to change in future.
929
930       Localized deletion of elements of composite types
931
932       You can use the "delete local $array[$idx]" and "delete local
933       $hash{key}" constructs to delete a composite type entry for the current
934       block and restore it when it ends.  They return the array/hash value
935       before the localization, which means that they are respectively
936       equivalent to
937
938           do {
939               my $val = $array[$idx];
940               local  $array[$idx];
941               delete $array[$idx];
942               $val
943           }
944
945       and
946
947           do {
948               my $val = $hash{key};
949               local  $hash{key};
950               delete $hash{key};
951               $val
952           }
953
954       except that for those the "local" is scoped to the "do" block.  Slices
955       are also accepted.
956
957           my %hash = (
958            a => [ 7, 8, 9 ],
959            b => 1,
960           )
961
962           {
963            my $a = delete local $hash{a};
964            # $a is [ 7, 8, 9 ]
965            # %hash is (b => 1)
966
967            {
968             my @nums = delete local @$a[0, 2]
969             # @nums is (7, 9)
970             # $a is [ undef, 8 ]
971
972             $a[0] = 999; # will be erased when the scope ends
973            }
974            # $a is back to [ 7, 8, 9 ]
975
976           }
977           # %hash is back to its original state
978
979   Lvalue subroutines
980       It is possible to return a modifiable value from a subroutine.  To do
981       this, you have to declare the subroutine to return an lvalue.
982
983           my $val;
984           sub canmod : lvalue {
985               $val;  # or:  return $val;
986           }
987           sub nomod {
988               $val;
989           }
990
991           canmod() = 5;   # assigns to $val
992           nomod()  = 5;   # ERROR
993
994       The scalar/list context for the subroutine and for the right-hand side
995       of assignment is determined as if the subroutine call is replaced by a
996       scalar.  For example, consider:
997
998           data(2,3) = get_data(3,4);
999
1000       Both subroutines here are called in a scalar context, while in:
1001
1002           (data(2,3)) = get_data(3,4);
1003
1004       and in:
1005
1006           (data(2),data(3)) = get_data(3,4);
1007
1008       all the subroutines are called in a list context.
1009
1010       Lvalue subroutines are convenient, but you have to keep in mind that,
1011       when used with objects, they may violate encapsulation.  A normal
1012       mutator can check the supplied argument before setting the attribute it
1013       is protecting, an lvalue subroutine cannot.  If you require any special
1014       processing when storing and retrieving the values, consider using the
1015       CPAN module Sentinel or something similar.
1016
1017   Lexical Subroutines
1018       Beginning with Perl 5.18, you can declare a private subroutine with
1019       "my" or "state".  As with state variables, the "state" keyword is only
1020       available under "use feature 'state'" or "use 5.010" or higher.
1021
1022       Prior to Perl 5.26, lexical subroutines were deemed experimental and
1023       were available only under the "use feature 'lexical_subs'" pragma.
1024       They also produced a warning unless the "experimental::lexical_subs"
1025       warnings category was disabled.
1026
1027       These subroutines are only visible within the block in which they are
1028       declared, and only after that declaration:
1029
1030           # Include these two lines if your code is intended to run under Perl
1031           # versions earlier than 5.26.
1032           no warnings "experimental::lexical_subs";
1033           use feature 'lexical_subs';
1034
1035           foo();              # calls the package/global subroutine
1036           state sub foo {
1037               foo();          # also calls the package subroutine
1038           }
1039           foo();              # calls "state" sub
1040           my $ref = \&foo;    # take a reference to "state" sub
1041
1042           my sub bar { ... }
1043           bar();              # calls "my" sub
1044
1045       You can't (directly) write a recursive lexical subroutine:
1046
1047           # WRONG
1048           my sub baz {
1049               baz();
1050           }
1051
1052       This example fails because "baz()" refers to the package/global
1053       subroutine "baz", not the lexical subroutine currently being defined.
1054
1055       The solution is to use "__SUB__":
1056
1057           my sub baz {
1058               __SUB__->();    # calls itself
1059           }
1060
1061       It is possible to predeclare a lexical subroutine.  The "sub foo {...}"
1062       subroutine definition syntax respects any previous "my sub;" or "state
1063       sub;" declaration.  Using this to define recursive subroutines is a bad
1064       idea, however:
1065
1066           my sub baz;         # predeclaration
1067           sub baz {           # define the "my" sub
1068               baz();          # WRONG: calls itself, but leaks memory
1069           }
1070
1071       Just like "my $f; $f = sub { $f->() }", this example leaks memory.  The
1072       name "baz" is a reference to the subroutine, and the subroutine uses
1073       the name "baz"; they keep each other alive (see "Circular References"
1074       in perlref).
1075
1076       "state sub" vs "my sub"
1077
1078       What is the difference between "state" subs and "my" subs?  Each time
1079       that execution enters a block when "my" subs are declared, a new copy
1080       of each sub is created.  "State" subroutines persist from one execution
1081       of the containing block to the next.
1082
1083       So, in general, "state" subroutines are faster.  But "my" subs are
1084       necessary if you want to create closures:
1085
1086           sub whatever {
1087               my $x = shift;
1088               my sub inner {
1089                   ... do something with $x ...
1090               }
1091               inner();
1092           }
1093
1094       In this example, a new $x is created when "whatever" is called, and
1095       also a new "inner", which can see the new $x.  A "state" sub will only
1096       see the $x from the first call to "whatever".
1097
1098       "our" subroutines
1099
1100       Like "our $variable", "our sub" creates a lexical alias to the package
1101       subroutine of the same name.
1102
1103       The two main uses for this are to switch back to using the package sub
1104       inside an inner scope:
1105
1106           sub foo { ... }
1107
1108           sub bar {
1109               my sub foo { ... }
1110               {
1111                   # need to use the outer foo here
1112                   our sub foo;
1113                   foo();
1114               }
1115           }
1116
1117       and to make a subroutine visible to other packages in the same scope:
1118
1119           package MySneakyModule;
1120
1121           our sub do_something { ... }
1122
1123           sub do_something_with_caller {
1124               package DB;
1125               () = caller 1;          # sets @DB::args
1126               do_something(@args);    # uses MySneakyModule::do_something
1127           }
1128
1129   Passing Symbol Table Entries (typeglobs)
1130       WARNING: The mechanism described in this section was originally the
1131       only way to simulate pass-by-reference in older versions of Perl.
1132       While it still works fine in modern versions, the new reference
1133       mechanism is generally easier to work with.  See below.
1134
1135       Sometimes you don't want to pass the value of an array to a subroutine
1136       but rather the name of it, so that the subroutine can modify the global
1137       copy of it rather than working with a local copy.  In perl you can
1138       refer to all objects of a particular name by prefixing the name with a
1139       star: *foo.  This is often known as a "typeglob", because the star on
1140       the front can be thought of as a wildcard match for all the funny
1141       prefix characters on variables and subroutines and such.
1142
1143       When evaluated, the typeglob produces a scalar value that represents
1144       all the objects of that name, including any filehandle, format, or
1145       subroutine.  When assigned to, it causes the name mentioned to refer to
1146       whatever "*" value was assigned to it.  Example:
1147
1148           sub doubleary {
1149               local(*someary) = @_;
1150               foreach $elem (@someary) {
1151                   $elem *= 2;
1152               }
1153           }
1154           doubleary(*foo);
1155           doubleary(*bar);
1156
1157       Scalars are already passed by reference, so you can modify scalar
1158       arguments without using this mechanism by referring explicitly to $_[0]
1159       etc.  You can modify all the elements of an array by passing all the
1160       elements as scalars, but you have to use the "*" mechanism (or the
1161       equivalent reference mechanism) to "push", "pop", or change the size of
1162       an array.  It will certainly be faster to pass the typeglob (or
1163       reference).
1164
1165       Even if you don't want to modify an array, this mechanism is useful for
1166       passing multiple arrays in a single LIST, because normally the LIST
1167       mechanism will merge all the array values so that you can't extract out
1168       the individual arrays.  For more on typeglobs, see "Typeglobs and
1169       Filehandles" in perldata.
1170
1171   When to Still Use local()
1172       Despite the existence of "my", there are still three places where the
1173       "local" operator still shines.  In fact, in these three places, you
1174       must use "local" instead of "my".
1175
1176       1.  You need to give a global variable a temporary value, especially
1177           $_.
1178
1179           The global variables, like @ARGV or the punctuation variables, must
1180           be "local"ized with "local()".  This block reads in /etc/motd, and
1181           splits it up into chunks separated by lines of equal signs, which
1182           are placed in @Fields.
1183
1184               {
1185                   local @ARGV = ("/etc/motd");
1186                   local $/ = undef;
1187                   local $_ = <>;
1188                   @Fields = split /^\s*=+\s*$/;
1189               }
1190
1191           It particular, it's important to "local"ize $_ in any routine that
1192           assigns to it.  Look out for implicit assignments in "while"
1193           conditionals.
1194
1195       2.  You need to create a local file or directory handle or a local
1196           function.
1197
1198           A function that needs a filehandle of its own must use "local()" on
1199           a complete typeglob.   This can be used to create new symbol table
1200           entries:
1201
1202               sub ioqueue {
1203                   local  (*READER, *WRITER);    # not my!
1204                   pipe    (READER,  WRITER)     or die "pipe: $!";
1205                   return (*READER, *WRITER);
1206               }
1207               ($head, $tail) = ioqueue();
1208
1209           See the Symbol module for a way to create anonymous symbol table
1210           entries.
1211
1212           Because assignment of a reference to a typeglob creates an alias,
1213           this can be used to create what is effectively a local function, or
1214           at least, a local alias.
1215
1216               {
1217                   local *grow = \&shrink; # only until this block exits
1218                   grow();                # really calls shrink()
1219                   move();                # if move() grow()s, it shrink()s too
1220               }
1221               grow();                    # get the real grow() again
1222
1223           See "Function Templates" in perlref for more about manipulating
1224           functions by name in this way.
1225
1226       3.  You want to temporarily change just one element of an array or
1227           hash.
1228
1229           You can "local"ize just one element of an aggregate.  Usually this
1230           is done on dynamics:
1231
1232               {
1233                   local $SIG{INT} = 'IGNORE';
1234                   funct();                            # uninterruptible
1235               }
1236               # interruptibility automatically restored here
1237
1238           But it also works on lexically declared aggregates.
1239
1240   Pass by Reference
1241       If you want to pass more than one array or hash into a function--or
1242       return them from it--and have them maintain their integrity, then
1243       you're going to have to use an explicit pass-by-reference.  Before you
1244       do that, you need to understand references as detailed in perlref.
1245       This section may not make much sense to you otherwise.
1246
1247       Here are a few simple examples.  First, let's pass in several arrays to
1248       a function and have it "pop" all of then, returning a new list of all
1249       their former last elements:
1250
1251           @tailings = popmany ( \@a, \@b, \@c, \@d );
1252
1253           sub popmany {
1254               my $aref;
1255               my @retlist;
1256               foreach $aref ( @_ ) {
1257                   push @retlist, pop @$aref;
1258               }
1259               return @retlist;
1260           }
1261
1262       Here's how you might write a function that returns a list of keys
1263       occurring in all the hashes passed to it:
1264
1265           @common = inter( \%foo, \%bar, \%joe );
1266           sub inter {
1267               my ($k, $href, %seen); # locals
1268               foreach $href (@_) {
1269                   while ( $k = each %$href ) {
1270                       $seen{$k}++;
1271                   }
1272               }
1273               return grep { $seen{$_} == @_ } keys %seen;
1274           }
1275
1276       So far, we're using just the normal list return mechanism.  What
1277       happens if you want to pass or return a hash?  Well, if you're using
1278       only one of them, or you don't mind them concatenating, then the normal
1279       calling convention is ok, although a little expensive.
1280
1281       Where people get into trouble is here:
1282
1283           (@a, @b) = func(@c, @d);
1284       or
1285           (%a, %b) = func(%c, %d);
1286
1287       That syntax simply won't work.  It sets just @a or %a and clears the @b
1288       or %b.  Plus the function didn't get passed into two separate arrays or
1289       hashes: it got one long list in @_, as always.
1290
1291       If you can arrange for everyone to deal with this through references,
1292       it's cleaner code, although not so nice to look at.  Here's a function
1293       that takes two array references as arguments, returning the two array
1294       elements in order of how many elements they have in them:
1295
1296           ($aref, $bref) = func(\@c, \@d);
1297           print "@$aref has more than @$bref\n";
1298           sub func {
1299               my ($cref, $dref) = @_;
1300               if (@$cref > @$dref) {
1301                   return ($cref, $dref);
1302               } else {
1303                   return ($dref, $cref);
1304               }
1305           }
1306
1307       It turns out that you can actually do this also:
1308
1309           (*a, *b) = func(\@c, \@d);
1310           print "@a has more than @b\n";
1311           sub func {
1312               local (*c, *d) = @_;
1313               if (@c > @d) {
1314                   return (\@c, \@d);
1315               } else {
1316                   return (\@d, \@c);
1317               }
1318           }
1319
1320       Here we're using the typeglobs to do symbol table aliasing.  It's a tad
1321       subtle, though, and also won't work if you're using "my" variables,
1322       because only globals (even in disguise as "local"s) are in the symbol
1323       table.
1324
1325       If you're passing around filehandles, you could usually just use the
1326       bare typeglob, like *STDOUT, but typeglobs references work, too.  For
1327       example:
1328
1329           splutter(\*STDOUT);
1330           sub splutter {
1331               my $fh = shift;
1332               print $fh "her um well a hmmm\n";
1333           }
1334
1335           $rec = get_rec(\*STDIN);
1336           sub get_rec {
1337               my $fh = shift;
1338               return scalar <$fh>;
1339           }
1340
1341       If you're planning on generating new filehandles, you could do this.
1342       Notice to pass back just the bare *FH, not its reference.
1343
1344           sub openit {
1345               my $path = shift;
1346               local *FH;
1347               return open (FH, $path) ? *FH : undef;
1348           }
1349
1350   Prototypes
1351       Perl supports a very limited kind of compile-time argument checking
1352       using function prototyping.  This can be declared in either the PROTO
1353       section or with a prototype attribute.  If you declare either of
1354
1355           sub mypush (\@@)
1356           sub mypush :prototype(\@@)
1357
1358       then "mypush()" takes arguments exactly like "push()" does.
1359
1360       If subroutine signatures are enabled (see "Signatures"), then the
1361       shorter PROTO syntax is unavailable, because it would clash with
1362       signatures.  In that case, a prototype can only be declared in the form
1363       of an attribute.
1364
1365       The function declaration must be visible at compile time.  The
1366       prototype affects only interpretation of new-style calls to the
1367       function, where new-style is defined as not using the "&" character.
1368       In other words, if you call it like a built-in function, then it
1369       behaves like a built-in function.  If you call it like an old-fashioned
1370       subroutine, then it behaves like an old-fashioned subroutine.  It
1371       naturally falls out from this rule that prototypes have no influence on
1372       subroutine references like "\&foo" or on indirect subroutine calls like
1373       "&{$subref}" or "$subref->()".
1374
1375       Method calls are not influenced by prototypes either, because the
1376       function to be called is indeterminate at compile time, since the exact
1377       code called depends on inheritance.
1378
1379       Because the intent of this feature is primarily to let you define
1380       subroutines that work like built-in functions, here are prototypes for
1381       some other functions that parse almost exactly like the corresponding
1382       built-in.
1383
1384          Declared as             Called as
1385
1386          sub mylink ($$)         mylink $old, $new
1387          sub myvec ($$$)         myvec $var, $offset, 1
1388          sub myindex ($$;$)      myindex &getstring, "substr"
1389          sub mysyswrite ($$$;$)  mysyswrite $buf, 0, length($buf) - $off, $off
1390          sub myreverse (@)       myreverse $a, $b, $c
1391          sub myjoin ($@)         myjoin ":", $a, $b, $c
1392          sub mypop (\@)          mypop @array
1393          sub mysplice (\@$$@)    mysplice @array, 0, 2, @pushme
1394          sub mykeys (\[%@])      mykeys %{$hashref}
1395          sub myopen (*;$)        myopen HANDLE, $name
1396          sub mypipe (**)         mypipe READHANDLE, WRITEHANDLE
1397          sub mygrep (&@)         mygrep { /foo/ } $a, $b, $c
1398          sub myrand (;$)         myrand 42
1399          sub mytime ()           mytime
1400
1401       Any backslashed prototype character represents an actual argument that
1402       must start with that character (optionally preceded by "my", "our" or
1403       "local"), with the exception of "$", which will accept any scalar
1404       lvalue expression, such as "$foo = 7" or "my_function()->[0]".  The
1405       value passed as part of @_ will be a reference to the actual argument
1406       given in the subroutine call, obtained by applying "\" to that
1407       argument.
1408
1409       You can use the "\[]" backslash group notation to specify more than one
1410       allowed argument type.  For example:
1411
1412           sub myref (\[$@%&*])
1413
1414       will allow calling myref() as
1415
1416           myref $var
1417           myref @array
1418           myref %hash
1419           myref &sub
1420           myref *glob
1421
1422       and the first argument of myref() will be a reference to a scalar, an
1423       array, a hash, a code, or a glob.
1424
1425       Unbackslashed prototype characters have special meanings.  Any
1426       unbackslashed "@" or "%" eats all remaining arguments, and forces list
1427       context.  An argument represented by "$" forces scalar context.  An "&"
1428       requires an anonymous subroutine, which, if passed as the first
1429       argument, does not require the "sub" keyword or a subsequent comma.
1430
1431       A "*" allows the subroutine to accept a bareword, constant, scalar
1432       expression, typeglob, or a reference to a typeglob in that slot.  The
1433       value will be available to the subroutine either as a simple scalar, or
1434       (in the latter two cases) as a reference to the typeglob.  If you wish
1435       to always convert such arguments to a typeglob reference, use
1436       Symbol::qualify_to_ref() as follows:
1437
1438           use Symbol 'qualify_to_ref';
1439
1440           sub foo (*) {
1441               my $fh = qualify_to_ref(shift, caller);
1442               ...
1443           }
1444
1445       The "+" prototype is a special alternative to "$" that will act like
1446       "\[@%]" when given a literal array or hash variable, but will otherwise
1447       force scalar context on the argument.  This is useful for functions
1448       which should accept either a literal array or an array reference as the
1449       argument:
1450
1451           sub mypush (+@) {
1452               my $aref = shift;
1453               die "Not an array or arrayref" unless ref $aref eq 'ARRAY';
1454               push @$aref, @_;
1455           }
1456
1457       When using the "+" prototype, your function must check that the
1458       argument is of an acceptable type.
1459
1460       A semicolon (";") separates mandatory arguments from optional
1461       arguments.  It is redundant before "@" or "%", which gobble up
1462       everything else.
1463
1464       As the last character of a prototype, or just before a semicolon, a "@"
1465       or a "%", you can use "_" in place of "$": if this argument is not
1466       provided, $_ will be used instead.
1467
1468       Note how the last three examples in the table above are treated
1469       specially by the parser.  "mygrep()" is parsed as a true list operator,
1470       "myrand()" is parsed as a true unary operator with unary precedence the
1471       same as "rand()", and "mytime()" is truly without arguments, just like
1472       "time()".  That is, if you say
1473
1474           mytime +2;
1475
1476       you'll get "mytime() + 2", not mytime(2), which is how it would be
1477       parsed without a prototype.  If you want to force a unary function to
1478       have the same precedence as a list operator, add ";" to the end of the
1479       prototype:
1480
1481           sub mygetprotobynumber($;);
1482           mygetprotobynumber $a > $b; # parsed as mygetprotobynumber($a > $b)
1483
1484       The interesting thing about "&" is that you can generate new syntax
1485       with it, provided it's in the initial position:
1486
1487           sub try (&@) {
1488               my($try,$catch) = @_;
1489               eval { &$try };
1490               if ($@) {
1491                   local $_ = $@;
1492                   &$catch;
1493               }
1494           }
1495           sub catch (&) { $_[0] }
1496
1497           try {
1498               die "phooey";
1499           } catch {
1500               /phooey/ and print "unphooey\n";
1501           };
1502
1503       That prints "unphooey".  (Yes, there are still unresolved issues having
1504       to do with visibility of @_.  I'm ignoring that question for the
1505       moment.  (But note that if we make @_ lexically scoped, those anonymous
1506       subroutines can act like closures... (Gee, is this sounding a little
1507       Lispish?  (Never mind.))))
1508
1509       And here's a reimplementation of the Perl "grep" operator:
1510
1511           sub mygrep (&@) {
1512               my $code = shift;
1513               my @result;
1514               foreach $_ (@_) {
1515                   push(@result, $_) if &$code;
1516               }
1517               @result;
1518           }
1519
1520       Some folks would prefer full alphanumeric prototypes.  Alphanumerics
1521       have been intentionally left out of prototypes for the express purpose
1522       of someday in the future adding named, formal parameters.  The current
1523       mechanism's main goal is to let module writers provide better
1524       diagnostics for module users.  Larry feels the notation quite
1525       understandable to Perl programmers, and that it will not intrude
1526       greatly upon the meat of the module, nor make it harder to read.  The
1527       line noise is visually encapsulated into a small pill that's easy to
1528       swallow.
1529
1530       If you try to use an alphanumeric sequence in a prototype you will
1531       generate an optional warning - "Illegal character in prototype...".
1532       Unfortunately earlier versions of Perl allowed the prototype to be used
1533       as long as its prefix was a valid prototype.  The warning may be
1534       upgraded to a fatal error in a future version of Perl once the majority
1535       of offending code is fixed.
1536
1537       It's probably best to prototype new functions, not retrofit prototyping
1538       into older ones.  That's because you must be especially careful about
1539       silent impositions of differing list versus scalar contexts.  For
1540       example, if you decide that a function should take just one parameter,
1541       like this:
1542
1543           sub func ($) {
1544               my $n = shift;
1545               print "you gave me $n\n";
1546           }
1547
1548       and someone has been calling it with an array or expression returning a
1549       list:
1550
1551           func(@foo);
1552           func( $text =~ /\w+/g );
1553
1554       Then you've just supplied an automatic "scalar" in front of their
1555       argument, which can be more than a bit surprising.  The old @foo which
1556       used to hold one thing doesn't get passed in.  Instead, "func()" now
1557       gets passed in a 1; that is, the number of elements in @foo.  And the
1558       "m//g" gets called in scalar context so instead of a list of words it
1559       returns a boolean result and advances "pos($text)".  Ouch!
1560
1561       If a sub has both a PROTO and a BLOCK, the prototype is not applied
1562       until after the BLOCK is completely defined.  This means that a
1563       recursive function with a prototype has to be predeclared for the
1564       prototype to take effect, like so:
1565
1566               sub foo($$);
1567               sub foo($$) {
1568                       foo 1, 2;
1569               }
1570
1571       This is all very powerful, of course, and should be used only in
1572       moderation to make the world a better place.
1573
1574   Constant Functions
1575       Functions with a prototype of "()" are potential candidates for
1576       inlining.  If the result after optimization and constant folding is
1577       either a constant or a lexically-scoped scalar which has no other
1578       references, then it will be used in place of function calls made
1579       without "&".  Calls made using "&" are never inlined.  (See constant.pm
1580       for an easy way to declare most constants.)
1581
1582       The following functions would all be inlined:
1583
1584           sub pi ()           { 3.14159 }             # Not exact, but close.
1585           sub PI ()           { 4 * atan2 1, 1 }      # As good as it gets,
1586                                                       # and it's inlined, too!
1587           sub ST_DEV ()       { 0 }
1588           sub ST_INO ()       { 1 }
1589
1590           sub FLAG_FOO ()     { 1 << 8 }
1591           sub FLAG_BAR ()     { 1 << 9 }
1592           sub FLAG_MASK ()    { FLAG_FOO | FLAG_BAR }
1593
1594           sub OPT_BAZ ()      { not (0x1B58 & FLAG_MASK) }
1595
1596           sub N () { int(OPT_BAZ) / 3 }
1597
1598           sub FOO_SET () { 1 if FLAG_MASK & FLAG_FOO }
1599           sub FOO_SET2 () { if (FLAG_MASK & FLAG_FOO) { 1 } }
1600
1601       (Be aware that the last example was not always inlined in Perl 5.20 and
1602       earlier, which did not behave consistently with subroutines containing
1603       inner scopes.)  You can countermand inlining by using an explicit
1604       "return":
1605
1606           sub baz_val () {
1607               if (OPT_BAZ) {
1608                   return 23;
1609               }
1610               else {
1611                   return 42;
1612               }
1613           }
1614           sub bonk_val () { return 12345 }
1615
1616       As alluded to earlier you can also declare inlined subs dynamically at
1617       BEGIN time if their body consists of a lexically-scoped scalar which
1618       has no other references.  Only the first example here will be inlined:
1619
1620           BEGIN {
1621               my $var = 1;
1622               no strict 'refs';
1623               *INLINED = sub () { $var };
1624           }
1625
1626           BEGIN {
1627               my $var = 1;
1628               my $ref = \$var;
1629               no strict 'refs';
1630               *NOT_INLINED = sub () { $var };
1631           }
1632
1633       A not so obvious caveat with this (see [RT #79908]) is that the
1634       variable will be immediately inlined, and will stop behaving like a
1635       normal lexical variable, e.g. this will print 79907, not 79908:
1636
1637           BEGIN {
1638               my $x = 79907;
1639               *RT_79908 = sub () { $x };
1640               $x++;
1641           }
1642           print RT_79908(); # prints 79907
1643
1644       As of Perl 5.22, this buggy behavior, while preserved for backward
1645       compatibility, is detected and emits a deprecation warning.  If you
1646       want the subroutine to be inlined (with no warning), make sure the
1647       variable is not used in a context where it could be modified aside from
1648       where it is declared.
1649
1650           # Fine, no warning
1651           BEGIN {
1652               my $x = 54321;
1653               *INLINED = sub () { $x };
1654           }
1655           # Warns.  Future Perl versions will stop inlining it.
1656           BEGIN {
1657               my $x;
1658               $x = 54321;
1659               *ALSO_INLINED = sub () { $x };
1660           }
1661
1662       Perl 5.22 also introduces the experimental "const" attribute as an
1663       alternative.  (Disable the "experimental::const_attr" warnings if you
1664       want to use it.)  When applied to an anonymous subroutine, it forces
1665       the sub to be called when the "sub" expression is evaluated.  The
1666       return value is captured and turned into a constant subroutine:
1667
1668           my $x = 54321;
1669           *INLINED = sub : const { $x };
1670           $x++;
1671
1672       The return value of "INLINED" in this example will always be 54321,
1673       regardless of later modifications to $x.  You can also put any
1674       arbitrary code inside the sub, at it will be executed immediately and
1675       its return value captured the same way.
1676
1677       If you really want a subroutine with a "()" prototype that returns a
1678       lexical variable you can easily force it to not be inlined by adding an
1679       explicit "return":
1680
1681           BEGIN {
1682               my $x = 79907;
1683               *RT_79908 = sub () { return $x };
1684               $x++;
1685           }
1686           print RT_79908(); # prints 79908
1687
1688       The easiest way to tell if a subroutine was inlined is by using
1689       B::Deparse.  Consider this example of two subroutines returning 1, one
1690       with a "()" prototype causing it to be inlined, and one without (with
1691       deparse output truncated for clarity):
1692
1693        $ perl -MO=Deparse -le 'sub ONE { 1 } if (ONE) { print ONE if ONE }'
1694        sub ONE {
1695            1;
1696        }
1697        if (ONE ) {
1698            print ONE() if ONE ;
1699        }
1700        $ perl -MO=Deparse -le 'sub ONE () { 1 } if (ONE) { print ONE if ONE }'
1701        sub ONE () { 1 }
1702        do {
1703            print 1
1704        };
1705
1706       If you redefine a subroutine that was eligible for inlining, you'll get
1707       a warning by default.  You can use this warning to tell whether or not
1708       a particular subroutine is considered inlinable, since it's different
1709       than the warning for overriding non-inlined subroutines:
1710
1711           $ perl -e 'sub one () {1} sub one () {2}'
1712           Constant subroutine one redefined at -e line 1.
1713           $ perl -we 'sub one {1} sub one {2}'
1714           Subroutine one redefined at -e line 1.
1715
1716       The warning is considered severe enough not to be affected by the -w
1717       switch (or its absence) because previously compiled invocations of the
1718       function will still be using the old value of the function.  If you
1719       need to be able to redefine the subroutine, you need to ensure that it
1720       isn't inlined, either by dropping the "()" prototype (which changes
1721       calling semantics, so beware) or by thwarting the inlining mechanism in
1722       some other way, e.g. by adding an explicit "return", as mentioned
1723       above:
1724
1725           sub not_inlined () { return 23 }
1726
1727   Overriding Built-in Functions
1728       Many built-in functions may be overridden, though this should be tried
1729       only occasionally and for good reason.  Typically this might be done by
1730       a package attempting to emulate missing built-in functionality on a
1731       non-Unix system.
1732
1733       Overriding may be done only by importing the name from a module at
1734       compile time--ordinary predeclaration isn't good enough.  However, the
1735       "use subs" pragma lets you, in effect, predeclare subs via the import
1736       syntax, and these names may then override built-in ones:
1737
1738           use subs 'chdir', 'chroot', 'chmod', 'chown';
1739           chdir $somewhere;
1740           sub chdir { ... }
1741
1742       To unambiguously refer to the built-in form, precede the built-in name
1743       with the special package qualifier "CORE::".  For example, saying
1744       "CORE::open()" always refers to the built-in "open()", even if the
1745       current package has imported some other subroutine called "&open()"
1746       from elsewhere.  Even though it looks like a regular function call, it
1747       isn't: the CORE:: prefix in that case is part of Perl's syntax, and
1748       works for any keyword, regardless of what is in the CORE package.
1749       Taking a reference to it, that is, "\&CORE::open", only works for some
1750       keywords.  See CORE.
1751
1752       Library modules should not in general export built-in names like "open"
1753       or "chdir" as part of their default @EXPORT list, because these may
1754       sneak into someone else's namespace and change the semantics
1755       unexpectedly.  Instead, if the module adds that name to @EXPORT_OK,
1756       then it's possible for a user to import the name explicitly, but not
1757       implicitly.  That is, they could say
1758
1759           use Module 'open';
1760
1761       and it would import the "open" override.  But if they said
1762
1763           use Module;
1764
1765       they would get the default imports without overrides.
1766
1767       The foregoing mechanism for overriding built-in is restricted, quite
1768       deliberately, to the package that requests the import.  There is a
1769       second method that is sometimes applicable when you wish to override a
1770       built-in everywhere, without regard to namespace boundaries.  This is
1771       achieved by importing a sub into the special namespace
1772       "CORE::GLOBAL::".  Here is an example that quite brazenly replaces the
1773       "glob" operator with something that understands regular expressions.
1774
1775           package REGlob;
1776           require Exporter;
1777           @ISA = 'Exporter';
1778           @EXPORT_OK = 'glob';
1779
1780           sub import {
1781               my $pkg = shift;
1782               return unless @_;
1783               my $sym = shift;
1784               my $where = ($sym =~ s/^GLOBAL_// ? 'CORE::GLOBAL' : caller(0));
1785               $pkg->export($where, $sym, @_);
1786           }
1787
1788           sub glob {
1789               my $pat = shift;
1790               my @got;
1791               if (opendir my $d, '.') {
1792                   @got = grep /$pat/, readdir $d;
1793                   closedir $d;
1794               }
1795               return @got;
1796           }
1797           1;
1798
1799       And here's how it could be (ab)used:
1800
1801           #use REGlob 'GLOBAL_glob';      # override glob() in ALL namespaces
1802           package Foo;
1803           use REGlob 'glob';              # override glob() in Foo:: only
1804           print for <^[a-z_]+\.pm\$>;     # show all pragmatic modules
1805
1806       The initial comment shows a contrived, even dangerous example.  By
1807       overriding "glob" globally, you would be forcing the new (and
1808       subversive) behavior for the "glob" operator for every namespace,
1809       without the complete cognizance or cooperation of the modules that own
1810       those namespaces.  Naturally, this should be done with extreme
1811       caution--if it must be done at all.
1812
1813       The "REGlob" example above does not implement all the support needed to
1814       cleanly override perl's "glob" operator.  The built-in "glob" has
1815       different behaviors depending on whether it appears in a scalar or list
1816       context, but our "REGlob" doesn't.  Indeed, many perl built-in have
1817       such context sensitive behaviors, and these must be adequately
1818       supported by a properly written override.  For a fully functional
1819       example of overriding "glob", study the implementation of
1820       "File::DosGlob" in the standard library.
1821
1822       When you override a built-in, your replacement should be consistent (if
1823       possible) with the built-in native syntax.  You can achieve this by
1824       using a suitable prototype.  To get the prototype of an overridable
1825       built-in, use the "prototype" function with an argument of
1826       "CORE::builtin_name" (see "prototype" in perlfunc).
1827
1828       Note however that some built-ins can't have their syntax expressed by a
1829       prototype (such as "system" or "chomp").  If you override them you
1830       won't be able to fully mimic their original syntax.
1831
1832       The built-ins "do", "require" and "glob" can also be overridden, but
1833       due to special magic, their original syntax is preserved, and you don't
1834       have to define a prototype for their replacements.  (You can't override
1835       the "do BLOCK" syntax, though).
1836
1837       "require" has special additional dark magic: if you invoke your
1838       "require" replacement as "require Foo::Bar", it will actually receive
1839       the argument "Foo/Bar.pm" in @_.  See "require" in perlfunc.
1840
1841       And, as you'll have noticed from the previous example, if you override
1842       "glob", the "<*>" glob operator is overridden as well.
1843
1844       In a similar fashion, overriding the "readline" function also overrides
1845       the equivalent I/O operator "<FILEHANDLE>".  Also, overriding
1846       "readpipe" also overrides the operators "``" and "qx//".
1847
1848       Finally, some built-ins (e.g. "exists" or "grep") can't be overridden.
1849
1850   Autoloading
1851       If you call a subroutine that is undefined, you would ordinarily get an
1852       immediate, fatal error complaining that the subroutine doesn't exist.
1853       (Likewise for subroutines being used as methods, when the method
1854       doesn't exist in any base class of the class's package.)  However, if
1855       an "AUTOLOAD" subroutine is defined in the package or packages used to
1856       locate the original subroutine, then that "AUTOLOAD" subroutine is
1857       called with the arguments that would have been passed to the original
1858       subroutine.  The fully qualified name of the original subroutine
1859       magically appears in the global $AUTOLOAD variable of the same package
1860       as the "AUTOLOAD" routine.  The name is not passed as an ordinary
1861       argument because, er, well, just because, that's why.  (As an
1862       exception, a method call to a nonexistent "import" or "unimport" method
1863       is just skipped instead.  Also, if the AUTOLOAD subroutine is an XSUB,
1864       there are other ways to retrieve the subroutine name.  See "Autoloading
1865       with XSUBs" in perlguts for details.)
1866
1867       Many "AUTOLOAD" routines load in a definition for the requested
1868       subroutine using eval(), then execute that subroutine using a special
1869       form of goto() that erases the stack frame of the "AUTOLOAD" routine
1870       without a trace.  (See the source to the standard module documented in
1871       AutoLoader, for example.)  But an "AUTOLOAD" routine can also just
1872       emulate the routine and never define it.   For example, let's pretend
1873       that a function that wasn't defined should just invoke "system" with
1874       those arguments.  All you'd do is:
1875
1876           sub AUTOLOAD {
1877               my $program = $AUTOLOAD;
1878               $program =~ s/.*:://;
1879               system($program, @_);
1880           }
1881           date();
1882           who('am', 'i');
1883           ls('-l');
1884
1885       In fact, if you predeclare functions you want to call that way, you
1886       don't even need parentheses:
1887
1888           use subs qw(date who ls);
1889           date;
1890           who "am", "i";
1891           ls '-l';
1892
1893       A more complete example of this is the Shell module on CPAN, which can
1894       treat undefined subroutine calls as calls to external programs.
1895
1896       Mechanisms are available to help modules writers split their modules
1897       into autoloadable files.  See the standard AutoLoader module described
1898       in AutoLoader and in AutoSplit, the standard SelfLoader modules in
1899       SelfLoader, and the document on adding C functions to Perl code in
1900       perlxs.
1901
1902   Subroutine Attributes
1903       A subroutine declaration or definition may have a list of attributes
1904       associated with it.  If such an attribute list is present, it is broken
1905       up at space or colon boundaries and treated as though a "use
1906       attributes" had been seen.  See attributes for details about what
1907       attributes are currently supported.  Unlike the limitation with the
1908       obsolescent "use attrs", the "sub : ATTRLIST" syntax works to associate
1909       the attributes with a pre-declaration, and not just with a subroutine
1910       definition.
1911
1912       The attributes must be valid as simple identifier names (without any
1913       punctuation other than the '_' character).  They may have a parameter
1914       list appended, which is only checked for whether its parentheses
1915       ('(',')') nest properly.
1916
1917       Examples of valid syntax (even though the attributes are unknown):
1918
1919           sub fnord (&\%) : switch(10,foo(7,3))  :  expensive;
1920           sub plugh () : Ugly('\(") :Bad;
1921           sub xyzzy : _5x5 { ... }
1922
1923       Examples of invalid syntax:
1924
1925           sub fnord : switch(10,foo(); # ()-string not balanced
1926           sub snoid : Ugly('(');        # ()-string not balanced
1927           sub xyzzy : 5x5;              # "5x5" not a valid identifier
1928           sub plugh : Y2::north;        # "Y2::north" not a simple identifier
1929           sub snurt : foo + bar;        # "+" not a colon or space
1930
1931       The attribute list is passed as a list of constant strings to the code
1932       which associates them with the subroutine.  In particular, the second
1933       example of valid syntax above currently looks like this in terms of how
1934       it's parsed and invoked:
1935
1936           use attributes __PACKAGE__, \&plugh, q[Ugly('\(")], 'Bad';
1937
1938       For further details on attribute lists and their manipulation, see
1939       attributes and Attribute::Handlers.
1940

SEE ALSO

1942       See "Function Templates" in perlref for more about references and
1943       closures.  See perlxs if you'd like to learn about calling C
1944       subroutines from Perl.  See perlembed if you'd like to learn about
1945       calling Perl subroutines from C.  See perlmod to learn about bundling
1946       up your functions in separate files.  See perlmodlib to learn what
1947       library modules come standard on your system.  See perlootut to learn
1948       how to make object method calls.
1949
1950
1951
1952perl v5.28.2                      2018-11-01                        PERLSUB(1)
Impressum