stas 02/04/16 21:34:45 Modified: src/docs/1.0/guide Changes.pod porting.pod Log: o bring the warnings section up to date with perl 5.6 (Rafael Garcia-Suarez) o cover the 5.6's CHECK block in addition to INIT (Rafael Garcia-Suarez) Submitted by: Rafael Garcia-Suarez <[EMAIL PROTECTED]> Revision Changes Path 1.11 +6 -0 modperl-docs/src/docs/1.0/guide/Changes.pod Index: Changes.pod =================================================================== RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/Changes.pod,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- Changes.pod 17 Apr 2002 02:03:03 -0000 1.10 +++ Changes.pod 17 Apr 2002 04:34:45 -0000 1.11 @@ -16,6 +16,12 @@ o add a new section presenting a hackish solution for libraries collision, via do() or %INC mangling. + o bring the warnings section up to date with perl 5.6 (Rafael + Garcia-Suarez) + + o cover the 5.6's CHECK block in addition to INIT (Rafael + Garcia-Suarez) + * guide::troubleshooting o solution to the 'readdir()/opendir() not working' problem (Louis 1.7 +31 -29 modperl-docs/src/docs/1.0/guide/porting.pod Index: porting.pod =================================================================== RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/porting.pod,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- porting.pod 15 Apr 2002 06:56:39 -0000 1.6 +++ porting.pod 17 Apr 2002 04:34:45 -0000 1.7 @@ -2697,19 +2697,21 @@ This is usually useful when some server wide cleanup should be performed when the server is stopped or restarted. -=head1 CHECK Blocks +=head1 CHECK And INIT Blocks --- available since perl5.6.0 - -This block runs when compilation is complete, but before the program -starts. B<CHECK> can mean "checkpoint" or "double-check" or even jus -"stop"). - -Perl only calls B<CHECK> blocks during perl_parse(), which mod_perl -calls once at startup time. Therefore B<CHECK> blocks don't work for -the same reason this doesn't: +These blocks run when compilation is complete, but before the program +starts. B<CHECK> can mean "checkpoint" or "double-check" or even just +"stop". B<INIT> stands for "initialization". The difference is subtle; +B<CHECK> blocks are run just after the compilation ends, B<INIT> just +before the runtime begins. (Hence the C<-c> command-line flag to perl +runs B<CHECK> blocks but not B<INIT> blocks.) + +Perl only calls these blocks during perl_parse(), which mod_perl calls +once at startup time. Therefore B<CHECK> and B<INIT> blocks don't work +for the same reason these don't: % perl -e 'eval qq(CHECK { print "ok\n" })' + % perl -e 'eval qq(INIT { print "ok\n" })' =head1 Command Line Switches (-w, -T, etc) @@ -2740,50 +2742,50 @@ in C<httpd.conf> will turn warnings B<On> in any script. You can then fine tune your code, turning warnings B<Off> and B<On> by -setting the C<$^W> variable in your scripts. +using the C<warnings> pragma in your scripts (or by setting the C<$^W> +variable, if you prefer to be compatible with older, pre-5.6, perls). =item * Locally to a script #!/usr/bin/perl -w will turn warnings B<On> for the scope of the script. You can turn -them B<Off> and B<On> in the script by setting the C<$^W> variable as -noted above. +them B<Off> and B<On> in the script with C<no warnings;> and C<use +warnings;> as noted above. =item * Locally to a block This code turns warnings mode B<On> for the scope of the block. { - local $^W = 1; + use warnings; # some code } - # $^W assumes its previous value here + # back to the previous mode here This turns it B<Off>: { - local $^W = 0; + no warnings; # some code } - # $^W assumes its previous value here - -Note, that if you forget the C<local> operator this code will affect the -child processing the current request, and all the subsequent requests -processed by that child. Thus + # back to the previous mode here - $^W = 0; +This turns B<Off> only the warnings from the listed categories : +(warnings categories are explicited in the C<perldiag> manpage.) -will turn the warnings I<Off>, no matter what. + { + no warnings qw(uninitialized unopened); + # some code + } + # back to the previous mode here -If you want to turn warnings I<On> for the scope of the whole file, as -in the previous item, you can do this by adding: +If you want to turn warnings I<On> for the scope of the whole file, +you can do this by adding: - local $^W = 1; + use warnings; -at the beginning of the file. Since a file is effectively a block, -file scope behaves like a block's curly braces C<{ }> and C<local $^W> -at the start of the file will be effective for the whole file. +at the beginning of the file. =back
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]