On Sat, Mar 29, 2008 at 9:14 PM, Trudge <[EMAIL PROTECTED]> wrote:
>
> On Mar 29, 4:05 pm, [EMAIL PROTECTED] (Gunnar Hjalmarsson) wrote:
> > Trudge wrote:
> > > I'm trying to get a script to interpolate variable values in a
> > > __DATA__ block if possible. This is a kind of alternative to a full-
> > > blown template method. I'm not sure if I can even do what I want,
> > > hence my posting here.
> >
> > It can be done; see the FAQ entry
> >
> > perldoc -q "expand variables"
> >
> > <snip>
> >
> > > while (<DATA>)
> > > {
> > > chomp;
> > > if ($_ eq "<$data>")
> > > {
> > > next;
> > > print "$_\n";
> > > }
> > > if ($_ eq "</$data>")
> > > {
> > > last;
> > > }
> > > print "$_\n";
> > > }
> >
> > Try to replace that with:
> >
> > while (<DATA>) {
> > chomp;
> > next if $_ eq "<$data>";
> > last if $_ eq "</$data>";
> > s/(\$\$\w+)/$1/eeg;
> > print "$_\n";
> > }
> >
> > --
> > Gunnar Hjalmarsson
> > Email:http://www.gunnar.cc/cgi-bin/contact.pl
>
> Gunnar, this works perfectly, and is what I am trying to achieve. Many
> thanks, and a brew on me :)
>
> For the curious, I find myself sometimes having to display similar
> blocks of text over and over, with only minor changes. It could be
> HTML or XML. As far as I know, templates require separate files to
> work with. To avoid a lot of separate files, I've been using 'here'
> documents up until now, all contained in one large script. But I
> wondered if I could achieve a similar
> effect putting the blocks of text in a __DATA__ block. Now I know it
> can be done, so I will be exploring this method.
>
> Thanks to all who responded.
snip
If you have multiple templates you might want to use Inline::Files*
instead of a straight DATA block. This module lets you have multiple
DATA-like blocks:
#!/usr/bin/perl
use strict;
use warnings;
use Inline::Files;
print while <BAR>;
print while <BAZ>;
print while <FOO>;
__FOO__
This is foo
This is still foo
__BAR__
This is bar
This is still bar
__BAZ__
This is baz
This is still baz
* http://search.cpan.org/dist/Inline-Files/lib/Inline/Files.pm
--
Chas. Owens
wonkden.net
The most important skill a programmer can have is the ability to read.
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/