(Update, per
haoess below)
First of all, the DATA filehandle begins after the __DATA__ token, not __END__.
Here's one example to do it.
$ cat /tmp/html-data.pl
#!/usr/bin/perl
use strict;
use warnings;
use HTML::Template;
use File::Basename;
my($script, $path) = fileparse($0);
# the use of load_page() is intentional
my $template = load_page(\*DATA);
$template->param(
script => $script,
path => $path,
pid => $$,
);
print $template->output;
sub load_page {
my $fh = shift;
HTML::Template->new(filehandle => $fh);
}
__DATA__
Hi, I'm script <tmpl_var name=script>,
located at <tmpl_var name=path>
running with process id <tmpl_var name=pid>
$ perl /tmp/html-data.pl
Hi, I'm script html-data.pl,
located at /tmp/
running with process id 4291
Actually, you can also use the scalarref or arrayref options with DATA, such as,
my $template = load_page([<DATA>]);
sub load_page {
my $stuff = shift;
HTML::Template->new(arrayref => $stuff);
}
Or,
local $/ = undef;
my $template = load_page(\<DATA>);
sub load_page {
my $stuff = shift;
HTML::Template->new(scalarref => $stuff);
}
Open source softwares? Share and enjoy. Make profit from them if you can. Yet, share and enjoy!