X-Git-Url: http://git.shiar.nl/perl/plp/.git/blobdiff_plain/01ce7b8943ff0c25365916e0a2e355d06b3efc9a..HEAD:/lib/PLP.pm diff --git a/lib/PLP.pm b/lib/PLP.pm index a470b52..58120fa 100644 --- a/lib/PLP.pm +++ b/lib/PLP.pm @@ -14,7 +14,7 @@ use File::Spec; use strict; use warnings; -our $VERSION = '3.20'; +our $VERSION = '3.25'; # Subs in this package: # _default_error($plain, $html) Default error handler @@ -76,7 +76,9 @@ sub error { print "Status: $type\nContent-Type: text/html\n\n", qq{\n}, "\n$type $short\n\n

$short", - "

\n$long

\n


\n$ENV{SERVER_SIGNATURE}"; + "\n$long

\n


\n"; + print $ENV{SERVER_SIGNATURE} if $ENV{SERVER_SIGNATURE}; + print ""; } } @@ -92,6 +94,7 @@ sub handler { # Sends the headers waiting in %PLP::Script::header sub sendheaders () { + local $\; # reset print behaviour if triggered by say() $PLP::sentheaders ||= [ caller 1 ? (caller 1)[1, 2] : (caller)[1, 2] ]; print STDOUT "Content-Type: text/plain\n\n" if $PLP::DEBUG & 2; while (my ($header, $values) = each %PLP::Script::header) { @@ -407,8 +410,9 @@ These are described in L. Not only syntax is important, you should also be aware of some other important features. Your script runs inside the package C and shouldn't leave it. This is because when your script ends, all global variables in the -C package are destroyed, which is very important if you run under -mod_perl (they would retain their values if they weren't explicitly destroyed). +C package are destroyed, which is very important if you run a +persistent backend (they would retain their values if they weren't explicitly +destroyed). Until your first output, you are printing to a tied filehandle C. On first output, headers are sent to the browser and C is selected for @@ -420,13 +424,13 @@ line your output started. An alternative way of setting headers is using Perl's BEGIN blocks. BEGIN blocks are executed as soon as possible, before anything else. -Because the interpreter that mod_perl uses never ends, C blocks won't -work properly. You should use C instead. Note that this is a not -a built-in construct, so it needs proper termination with a semi-colon (as do -C and C). +Unless you're running as CGI, the interpreter won't exit after processing a page, +so C blocks won't work properly. You should use C instead. +Note that this is a not a built-in construct, so it needs proper termination +with a semi-colon (as do C and C). -Under mod_perl, modules are loaded only once. A good modular design can improve -performance because of this, but you will have to B the modules +When run persistently, modules are loaded only once. A good modular design can +improve performance because of this, but you will have to B the modules yourself when there are newer versions. The special hashes are tied hashes and do not always behave the way you expect, @@ -446,7 +450,7 @@ Originally by Juerd Waalboer =head1 LICENSE -Copyright (c) 2000-2002 Juerd Waalboer, 2005-2008 Mischa POSLAWSKY. +Copyright (c) 2000-2002 Juerd Waalboer, 2005-2018 Mischa POSLAWSKY. All rights reserved. This software is free software;