[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 =head1 NAME 2 3 perlmod - Perl modules (packages and symbol tables) 4 5 =head1 DESCRIPTION 6 7 =head2 Packages 8 X<package> X<namespace> X<variable, global> X<global variable> X<global> 9 10 Perl provides a mechanism for alternative namespaces to protect 11 packages from stomping on each other's variables. In fact, there's 12 really no such thing as a global variable in Perl. The package 13 statement declares the compilation unit as being in the given 14 namespace. The scope of the package declaration is from the 15 declaration itself through the end of the enclosing block, C<eval>, 16 or file, whichever comes first (the same scope as the my() and 17 local() operators). Unqualified dynamic identifiers will be in 18 this namespace, except for those few identifiers that if unqualified, 19 default to the main package instead of the current one as described 20 below. A package statement affects only dynamic variables--including 21 those you've used local() on--but I<not> lexical variables created 22 with my(). Typically it would be the first declaration in a file 23 included by the C<do>, C<require>, or C<use> operators. You can 24 switch into a package in more than one place; it merely influences 25 which symbol table is used by the compiler for the rest of that 26 block. You can refer to variables and filehandles in other packages 27 by prefixing the identifier with the package name and a double 28 colon: C<$Package::Variable>. If the package name is null, the 29 C<main> package is assumed. That is, C<$::sail> is equivalent to 30 C<$main::sail>. 31 32 The old package delimiter was a single quote, but double colon is now the 33 preferred delimiter, in part because it's more readable to humans, and 34 in part because it's more readable to B<emacs> macros. It also makes C++ 35 programmers feel like they know what's going on--as opposed to using the 36 single quote as separator, which was there to make Ada programmers feel 37 like they knew what was going on. Because the old-fashioned syntax is still 38 supported for backwards compatibility, if you try to use a string like 39 C<"This is $owner's house">, you'll be accessing C<$owner::s>; that is, 40 the $s variable in package C<owner>, which is probably not what you meant. 41 Use braces to disambiguate, as in C<"This is $owner}'s house">. 42 X<::> X<'> 43 44 Packages may themselves contain package separators, as in 45 C<$OUTER::INNER::var>. This implies nothing about the order of 46 name lookups, however. There are no relative packages: all symbols 47 are either local to the current package, or must be fully qualified 48 from the outer package name down. For instance, there is nowhere 49 within package C<OUTER> that C<$INNER::var> refers to 50 C<$OUTER::INNER::var>. C<INNER> refers to a totally 51 separate global package. 52 53 Only identifiers starting with letters (or underscore) are stored 54 in a package's symbol table. All other symbols are kept in package 55 C<main>, including all punctuation variables, like $_. In addition, 56 when unqualified, the identifiers STDIN, STDOUT, STDERR, ARGV, 57 ARGVOUT, ENV, INC, and SIG are forced to be in package C<main>, 58 even when used for other purposes than their built-in ones. If you 59 have a package called C<m>, C<s>, or C<y>, then you can't use the 60 qualified form of an identifier because it would be instead interpreted 61 as a pattern match, a substitution, or a transliteration. 62 X<variable, punctuation> 63 64 Variables beginning with underscore used to be forced into package 65 main, but we decided it was more useful for package writers to be able 66 to use leading underscore to indicate private variables and method names. 67 However, variables and functions named with a single C<_>, such as 68 $_ and C<sub _>, are still forced into the package C<main>. See also 69 L<perlvar/"Technical Note on the Syntax of Variable Names">. 70 71 C<eval>ed strings are compiled in the package in which the eval() was 72 compiled. (Assignments to C<$SIG{}>, however, assume the signal 73 handler specified is in the C<main> package. Qualify the signal handler 74 name if you wish to have a signal handler in a package.) For an 75 example, examine F<perldb.pl> in the Perl library. It initially switches 76 to the C<DB> package so that the debugger doesn't interfere with variables 77 in the program you are trying to debug. At various points, however, it 78 temporarily switches back to the C<main> package to evaluate various 79 expressions in the context of the C<main> package (or wherever you came 80 from). See L<perldebug>. 81 82 The special symbol C<__PACKAGE__> contains the current package, but cannot 83 (easily) be used to construct variable names. 84 85 See L<perlsub> for other scoping issues related to my() and local(), 86 and L<perlref> regarding closures. 87 88 =head2 Symbol Tables 89 X<symbol table> X<stash> X<%::> X<%main::> X<typeglob> X<glob> X<alias> 90 91 The symbol table for a package happens to be stored in the hash of that 92 name with two colons appended. The main symbol table's name is thus 93 C<%main::>, or C<%::> for short. Likewise the symbol table for the nested 94 package mentioned earlier is named C<%OUTER::INNER::>. 95 96 The value in each entry of the hash is what you are referring to when you 97 use the C<*name> typeglob notation. In fact, the following have the same 98 effect, though the first is more efficient because it does the symbol 99 table lookups at compile time: 100 101 local *main::foo = *main::bar; 102 local $main::{foo} = $main::{bar}; 103 104 (Be sure to note the B<vast> difference between the second line above 105 and C<local $main::foo = $main::bar>. The former is accessing the hash 106 C<%main::>, which is the symbol table of package C<main>. The latter is 107 simply assigning scalar C<$bar> in package C<main> to scalar C<$foo> of 108 the same package.) 109 110 You can use this to print out all the variables in a package, for 111 instance. The standard but antiquated F<dumpvar.pl> library and 112 the CPAN module Devel::Symdump make use of this. 113 114 Assignment to a typeglob performs an aliasing operation, i.e., 115 116 *dick = *richard; 117 118 causes variables, subroutines, formats, and file and directory handles 119 accessible via the identifier C<richard> also to be accessible via the 120 identifier C<dick>. If you want to alias only a particular variable or 121 subroutine, assign a reference instead: 122 123 *dick = \$richard; 124 125 Which makes $richard and $dick the same variable, but leaves 126 @richard and @dick as separate arrays. Tricky, eh? 127 128 There is one subtle difference between the following statements: 129 130 *foo = *bar; 131 *foo = \$bar; 132 133 C<*foo = *bar> makes the typeglobs themselves synonymous while 134 C<*foo = \$bar> makes the SCALAR portions of two distinct typeglobs 135 refer to the same scalar value. This means that the following code: 136 137 $bar = 1; 138 *foo = \$bar; # Make $foo an alias for $bar 139 140 { 141 local $bar = 2; # Restrict changes to block 142 print $foo; # Prints '1'! 143 } 144 145 Would print '1', because C<$foo> holds a reference to the I<original> 146 C<$bar> -- the one that was stuffed away by C<local()> and which will be 147 restored when the block ends. Because variables are accessed through the 148 typeglob, you can use C<*foo = *bar> to create an alias which can be 149 localized. (But be aware that this means you can't have a separate 150 C<@foo> and C<@bar>, etc.) 151 152 What makes all of this important is that the Exporter module uses glob 153 aliasing as the import/export mechanism. Whether or not you can properly 154 localize a variable that has been exported from a module depends on how 155 it was exported: 156 157 @EXPORT = qw($FOO); # Usual form, can't be localized 158 @EXPORT = qw(*FOO); # Can be localized 159 160 You can work around the first case by using the fully qualified name 161 (C<$Package::FOO>) where you need a local value, or by overriding it 162 by saying C<*FOO = *Package::FOO> in your script. 163 164 The C<*x = \$y> mechanism may be used to pass and return cheap references 165 into or from subroutines if you don't want to copy the whole 166 thing. It only works when assigning to dynamic variables, not 167 lexicals. 168 169 %some_hash = (); # can't be my() 170 *some_hash = fn( \%another_hash ); 171 sub fn { 172 local *hashsym = shift; 173 # now use %hashsym normally, and you 174 # will affect the caller's %another_hash 175 my %nhash = (); # do what you want 176 return \%nhash; 177 } 178 179 On return, the reference will overwrite the hash slot in the 180 symbol table specified by the *some_hash typeglob. This 181 is a somewhat tricky way of passing around references cheaply 182 when you don't want to have to remember to dereference variables 183 explicitly. 184 185 Another use of symbol tables is for making "constant" scalars. 186 X<constant> X<scalar, constant> 187 188 *PI = \3.14159265358979; 189 190 Now you cannot alter C<$PI>, which is probably a good thing all in all. 191 This isn't the same as a constant subroutine, which is subject to 192 optimization at compile-time. A constant subroutine is one prototyped 193 to take no arguments and to return a constant expression. See 194 L<perlsub> for details on these. The C<use constant> pragma is a 195 convenient shorthand for these. 196 197 You can say C<*foo{PACKAGE}> and C<*foo{NAME}> to find out what name and 198 package the *foo symbol table entry comes from. This may be useful 199 in a subroutine that gets passed typeglobs as arguments: 200 201 sub identify_typeglob { 202 my $glob = shift; 203 print 'You gave me ', *{$glob}{PACKAGE}, '::', *{$glob}{NAME}, "\n"; 204 } 205 identify_typeglob *foo; 206 identify_typeglob *bar::baz; 207 208 This prints 209 210 You gave me main::foo 211 You gave me bar::baz 212 213 The C<*foo{THING}> notation can also be used to obtain references to the 214 individual elements of *foo. See L<perlref>. 215 216 Subroutine definitions (and declarations, for that matter) need 217 not necessarily be situated in the package whose symbol table they 218 occupy. You can define a subroutine outside its package by 219 explicitly qualifying the name of the subroutine: 220 221 package main; 222 sub Some_package::foo { ... } # &foo defined in Some_package 223 224 This is just a shorthand for a typeglob assignment at compile time: 225 226 BEGIN { *Some_package::foo = sub { ... } } 227 228 and is I<not> the same as writing: 229 230 { 231 package Some_package; 232 sub foo { ... } 233 } 234 235 In the first two versions, the body of the subroutine is 236 lexically in the main package, I<not> in Some_package. So 237 something like this: 238 239 package main; 240 241 $Some_package::name = "fred"; 242 $main::name = "barney"; 243 244 sub Some_package::foo { 245 print "in ", __PACKAGE__, ": \$name is '$name'\n"; 246 } 247 248 Some_package::foo(); 249 250 prints: 251 252 in main: $name is 'barney' 253 254 rather than: 255 256 in Some_package: $name is 'fred' 257 258 This also has implications for the use of the SUPER:: qualifier 259 (see L<perlobj>). 260 261 =head2 BEGIN, UNITCHECK, CHECK, INIT and END 262 X<BEGIN> X<UNITCHECK> X<CHECK> X<INIT> X<END> 263 264 Five specially named code blocks are executed at the beginning and at 265 the end of a running Perl program. These are the C<BEGIN>, 266 C<UNITCHECK>, C<CHECK>, C<INIT>, and C<END> blocks. 267 268 These code blocks can be prefixed with C<sub> to give the appearance of a 269 subroutine (although this is not considered good style). One should note 270 that these code blocks don't really exist as named subroutines (despite 271 their appearance). The thing that gives this away is the fact that you can 272 have B<more than one> of these code blocks in a program, and they will get 273 B<all> executed at the appropriate moment. So you can't execute any of 274 these code blocks by name. 275 276 A C<BEGIN> code block is executed as soon as possible, that is, the moment 277 it is completely defined, even before the rest of the containing file (or 278 string) is parsed. You may have multiple C<BEGIN> blocks within a file (or 279 eval'ed string) -- they will execute in order of definition. Because a C<BEGIN> 280 code block executes immediately, it can pull in definitions of subroutines 281 and such from other files in time to be visible to the rest of the compile 282 and run time. Once a C<BEGIN> has run, it is immediately undefined and any 283 code it used is returned to Perl's memory pool. 284 285 It should be noted that C<BEGIN> and C<UNITCHECK> code blocks B<are> 286 executed inside string C<eval()>'s. The C<CHECK> and C<INIT> code 287 blocks are B<not> executed inside a string eval, which e.g. can be a 288 problem in a mod_perl environment. 289 290 An C<END> code block is executed as late as possible, that is, after 291 perl has finished running the program and just before the interpreter 292 is being exited, even if it is exiting as a result of a die() function. 293 (But not if it's morphing into another program via C<exec>, or 294 being blown out of the water by a signal--you have to trap that yourself 295 (if you can).) You may have multiple C<END> blocks within a file--they 296 will execute in reverse order of definition; that is: last in, first 297 out (LIFO). C<END> blocks are not executed when you run perl with the 298 C<-c> switch, or if compilation fails. 299 300 Note that C<END> code blocks are B<not> executed at the end of a string 301 C<eval()>: if any C<END> code blocks are created in a string C<eval()>, 302 they will be executed just as any other C<END> code block of that package 303 in LIFO order just before the interpreter is being exited. 304 305 Inside an C<END> code block, C<$?> contains the value that the program is 306 going to pass to C<exit()>. You can modify C<$?> to change the exit 307 value of the program. Beware of changing C<$?> by accident (e.g. by 308 running something via C<system>). 309 X<$?> 310 311 C<UNITCHECK>, C<CHECK> and C<INIT> code blocks are useful to catch the 312 transition between the compilation phase and the execution phase of 313 the main program. 314 315 C<UNITCHECK> blocks are run just after the unit which defined them has 316 been compiled. The main program file and each module it loads are 317 compilation units, as are string C<eval>s, code compiled using the 318 C<(?{ })> construct in a regex, calls to C<do FILE>, C<require FILE>, 319 and code after the C<-e> switch on the command line. 320 321 C<CHECK> code blocks are run just after the B<initial> Perl compile phase ends 322 and before the run time begins, in LIFO order. C<CHECK> code blocks are used 323 in the Perl compiler suite to save the compiled state of the program. 324 325 C<INIT> blocks are run just before the Perl runtime begins execution, in 326 "first in, first out" (FIFO) order. 327 328 When you use the B<-n> and B<-p> switches to Perl, C<BEGIN> and 329 C<END> work just as they do in B<awk>, as a degenerate case. 330 Both C<BEGIN> and C<CHECK> blocks are run when you use the B<-c> 331 switch for a compile-only syntax check, although your main code 332 is not. 333 334 The B<begincheck> program makes it all clear, eventually: 335 336 #!/usr/bin/perl 337 338 # begincheck 339 340 print "10. Ordinary code runs at runtime.\n"; 341 342 END { print "16. So this is the end of the tale.\n" } 343 INIT { print " 7. INIT blocks run FIFO just before runtime.\n" } 344 UNITCHECK { 345 print " 4. And therefore before any CHECK blocks.\n" 346 } 347 CHECK { print " 6. So this is the sixth line.\n" } 348 349 print "11. It runs in order, of course.\n"; 350 351 BEGIN { print " 1. BEGIN blocks run FIFO during compilation.\n" } 352 END { print "15. Read perlmod for the rest of the story.\n" } 353 CHECK { print " 5. CHECK blocks run LIFO after all compilation.\n" } 354 INIT { print " 8. Run this again, using Perl's -c switch.\n" } 355 356 print "12. This is anti-obfuscated code.\n"; 357 358 END { print "14. END blocks run LIFO at quitting time.\n" } 359 BEGIN { print " 2. So this line comes out second.\n" } 360 UNITCHECK { 361 print " 3. UNITCHECK blocks run LIFO after each file is compiled.\n" 362 } 363 INIT { print " 9. You'll see the difference right away.\n" } 364 365 print "13. It merely _looks_ like it should be confusing.\n"; 366 367 __END__ 368 369 =head2 Perl Classes 370 X<class> X<@ISA> 371 372 There is no special class syntax in Perl, but a package may act 373 as a class if it provides subroutines to act as methods. Such a 374 package may also derive some of its methods from another class (package) 375 by listing the other package name(s) in its global @ISA array (which 376 must be a package global, not a lexical). 377 378 For more on this, see L<perltoot> and L<perlobj>. 379 380 =head2 Perl Modules 381 X<module> 382 383 A module is just a set of related functions in a library file, i.e., 384 a Perl package with the same name as the file. It is specifically 385 designed to be reusable by other modules or programs. It may do this 386 by providing a mechanism for exporting some of its symbols into the 387 symbol table of any package using it, or it may function as a class 388 definition and make its semantics available implicitly through 389 method calls on the class and its objects, without explicitly 390 exporting anything. Or it can do a little of both. 391 392 For example, to start a traditional, non-OO module called Some::Module, 393 create a file called F<Some/Module.pm> and start with this template: 394 395 package Some::Module; # assumes Some/Module.pm 396 397 use strict; 398 use warnings; 399 400 BEGIN { 401 use Exporter (); 402 our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); 403 404 # set the version for version checking 405 $VERSION = 1.00; 406 # if using RCS/CVS, this may be preferred 407 $VERSION = sprintf "%d.%03d", q$Revision: 1.1 $ =~ /(\d+)/g; 408 409 @ISA = qw(Exporter); 410 @EXPORT = qw(&func1 &func2 &func4); 411 %EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ], 412 413 # your exported package globals go here, 414 # as well as any optionally exported functions 415 @EXPORT_OK = qw($Var1 %Hashit &func3); 416 } 417 our @EXPORT_OK; 418 419 # exported package globals go here 420 our $Var1; 421 our %Hashit; 422 423 # non-exported package globals go here 424 our @more; 425 our $stuff; 426 427 # initialize package globals, first exported ones 428 $Var1 = ''; 429 %Hashit = (); 430 431 # then the others (which are still accessible as $Some::Module::stuff) 432 $stuff = ''; 433 @more = (); 434 435 # all file-scoped lexicals must be created before 436 # the functions below that use them. 437 438 # file-private lexicals go here 439 my $priv_var = ''; 440 my %secret_hash = (); 441 442 # here's a file-private function as a closure, 443 # callable as &$priv_func; it cannot be prototyped. 444 my $priv_func = sub { 445 # stuff goes here. 446 }; 447 448 # make all your functions, whether exported or not; 449 # remember to put something interesting in the {} stubs 450 sub func1 {} # no prototype 451 sub func2() {} # proto'd void 452 sub func3($$) {} # proto'd to 2 scalars 453 454 # this one isn't exported, but could be called! 455 sub func4(\%) {} # proto'd to 1 hash ref 456 457 END { } # module clean-up code here (global destructor) 458 459 ## YOUR CODE GOES HERE 460 461 1; # don't forget to return a true value from the file 462 463 Then go on to declare and use your variables in functions without 464 any qualifications. See L<Exporter> and the L<perlmodlib> for 465 details on mechanics and style issues in module creation. 466 467 Perl modules are included into your program by saying 468 469 use Module; 470 471 or 472 473 use Module LIST; 474 475 This is exactly equivalent to 476 477 BEGIN { require Module; import Module; } 478 479 or 480 481 BEGIN { require Module; import Module LIST; } 482 483 As a special case 484 485 use Module (); 486 487 is exactly equivalent to 488 489 BEGIN { require Module; } 490 491 All Perl module files have the extension F<.pm>. The C<use> operator 492 assumes this so you don't have to spell out "F<Module.pm>" in quotes. 493 This also helps to differentiate new modules from old F<.pl> and 494 F<.ph> files. Module names are also capitalized unless they're 495 functioning as pragmas; pragmas are in effect compiler directives, 496 and are sometimes called "pragmatic modules" (or even "pragmata" 497 if you're a classicist). 498 499 The two statements: 500 501 require SomeModule; 502 require "SomeModule.pm"; 503 504 differ from each other in two ways. In the first case, any double 505 colons in the module name, such as C<Some::Module>, are translated 506 into your system's directory separator, usually "/". The second 507 case does not, and would have to be specified literally. The other 508 difference is that seeing the first C<require> clues in the compiler 509 that uses of indirect object notation involving "SomeModule", as 510 in C<$ob = purge SomeModule>, are method calls, not function calls. 511 (Yes, this really can make a difference.) 512 513 Because the C<use> statement implies a C<BEGIN> block, the importing 514 of semantics happens as soon as the C<use> statement is compiled, 515 before the rest of the file is compiled. This is how it is able 516 to function as a pragma mechanism, and also how modules are able to 517 declare subroutines that are then visible as list or unary operators for 518 the rest of the current file. This will not work if you use C<require> 519 instead of C<use>. With C<require> you can get into this problem: 520 521 require Cwd; # make Cwd:: accessible 522 $here = Cwd::getcwd(); 523 524 use Cwd; # import names from Cwd:: 525 $here = getcwd(); 526 527 require Cwd; # make Cwd:: accessible 528 $here = getcwd(); # oops! no main::getcwd() 529 530 In general, C<use Module ()> is recommended over C<require Module>, 531 because it determines module availability at compile time, not in the 532 middle of your program's execution. An exception would be if two modules 533 each tried to C<use> each other, and each also called a function from 534 that other module. In that case, it's easy to use C<require> instead. 535 536 Perl packages may be nested inside other package names, so we can have 537 package names containing C<::>. But if we used that package name 538 directly as a filename it would make for unwieldy or impossible 539 filenames on some systems. Therefore, if a module's name is, say, 540 C<Text::Soundex>, then its definition is actually found in the library 541 file F<Text/Soundex.pm>. 542 543 Perl modules always have a F<.pm> file, but there may also be 544 dynamically linked executables (often ending in F<.so>) or autoloaded 545 subroutine definitions (often ending in F<.al>) associated with the 546 module. If so, these will be entirely transparent to the user of 547 the module. It is the responsibility of the F<.pm> file to load 548 (or arrange to autoload) any additional functionality. For example, 549 although the POSIX module happens to do both dynamic loading and 550 autoloading, the user can say just C<use POSIX> to get it all. 551 552 =head2 Making your module threadsafe 553 X<threadsafe> X<thread safe> 554 X<module, threadsafe> X<module, thread safe> 555 X<CLONE> X<CLONE_SKIP> X<thread> X<threads> X<ithread> 556 557 Since 5.6.0, Perl has had support for a new type of threads called 558 interpreter threads (ithreads). These threads can be used explicitly 559 and implicitly. 560 561 Ithreads work by cloning the data tree so that no data is shared 562 between different threads. These threads can be used by using the C<threads> 563 module or by doing fork() on win32 (fake fork() support). When a 564 thread is cloned all Perl data is cloned, however non-Perl data cannot 565 be cloned automatically. Perl after 5.7.2 has support for the C<CLONE> 566 special subroutine. In C<CLONE> you can do whatever 567 you need to do, 568 like for example handle the cloning of non-Perl data, if necessary. 569 C<CLONE> will be called once as a class method for every package that has it 570 defined (or inherits it). It will be called in the context of the new thread, 571 so all modifications are made in the new area. Currently CLONE is called with 572 no parameters other than the invocant package name, but code should not assume 573 that this will remain unchanged, as it is likely that in future extra parameters 574 will be passed in to give more information about the state of cloning. 575 576 If you want to CLONE all objects you will need to keep track of them per 577 package. This is simply done using a hash and Scalar::Util::weaken(). 578 579 Perl after 5.8.7 has support for the C<CLONE_SKIP> special subroutine. 580 Like C<CLONE>, C<CLONE_SKIP> is called once per package; however, it is 581 called just before cloning starts, and in the context of the parent 582 thread. If it returns a true value, then no objects of that class will 583 be cloned; or rather, they will be copied as unblessed, undef values. 584 For example: if in the parent there are two references to a single blessed 585 hash, then in the child there will be two references to a single undefined 586 scalar value instead. 587 This provides a simple mechanism for making a module threadsafe; just add 588 C<sub CLONE_SKIP { 1 }> at the top of the class, and C<DESTROY()> will be 589 now only be called once per object. Of course, if the child thread needs 590 to make use of the objects, then a more sophisticated approach is 591 needed. 592 593 Like C<CLONE>, C<CLONE_SKIP> is currently called with no parameters other 594 than the invocant package name, although that may change. Similarly, to 595 allow for future expansion, the return value should be a single C<0> or 596 C<1> value. 597 598 =head1 SEE ALSO 599 600 See L<perlmodlib> for general style issues related to building Perl 601 modules and classes, as well as descriptions of the standard library 602 and CPAN, L<Exporter> for how Perl's standard import/export mechanism 603 works, L<perltoot> and L<perltooc> for an in-depth tutorial on 604 creating classes, L<perlobj> for a hard-core reference document on 605 objects, L<perlsub> for an explanation of functions and scoping, 606 and L<perlxstut> and L<perlguts> for more information on writing 607 extension modules.
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |