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/