Often it is only the
include and the
exec command that people want. For one of my scripts I took only some lines out of
CGI::SSI and send my templates through it.
$template =~ s/<!--#(include|exec) (\w+)="(.*)"\s*-->/ssi($1,$2,$3)/eg
+;
sub ssi{
my($t,$n,$v) = @_;
if($t eq 'exec'){
if($n eq 'cgi'){
$t = 'include';
$n = 'virtual';
}elsif($n eq 'cmd'){
return `$v`
}
}
if($t eq 'include'){
if($n eq 'file' || ($n eq 'virtual' && $v=~/^\//)){
my $file = $v=~/^\// ? $ENV{DOCUMENT_ROOT}.$v : $v;
open(SSI, $file) or return "[SSI: $!]";
my $re = join '', <SSI>;
close(SSI);
return $re;
}elsif($n eq 'virtual'){
eval "use LWP::Simple;1;";
return "[SSI: $@]" if $@;
return get($v);
}
}
}