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