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")