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