Ah, yes. Much better! I was also thinking of an
improvement to prevent the example code from sticking around
when it wasn't being used. For example:
package main;
BEGIN {
my $isScript= ! caller(2);
sub _isScript() { $isScript }
}
if( _isScript ) {
require CGI;
my $q= CGI->new();
# ...
}
undef &_isScript;
would still require that the sample code be parsed the first
time that the module is used but the optimizer would know
to throw the resulting code away. Not quite as pretty,
though.
Another hack to prevent even the work of parsing can be
done:
package main;
unless( caller ) {
my $code= do { local($/); <DATA> };
my $file= __FILE__;
my $line= __LINE__ + 5;
eval "\n# line $line $file\n$code; 1"
or die "$@\n";
}
__END__
use CGI;
# ...
__END__
-
tye
(but my friends call me "Tye")
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|