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