R. Joseph Newton wrote:

>Jan Eden wrote:
>
>>Hi Stuart,
>>
>>@testarray gets the content of testmessage.txt, which contains the
>>string '$name'. You cannot manipulate this string by setting the
>>variable $name. You could do:
>>
>>@testarray =~ s/\$name/$name/g;
>>
>>which will replace the literal string '$name' using your variable's
>>content.
>
>>
>>I am just a beginner myself, and this is not meant to be a cool
>>solution to anything, just a pointer.
>
>Actually, this is an excellent suggestion for using placeholders in
>template files.  I would suggest, though, that it would be better to
>use some other delimiter to indicate such place-holder, perhaps
>%placeholdername%., to distinguish these from program variables more
>readily.

From the Cookbook, 1st edition (Recipe 20.9):

sub template {
    my ($filename, $fillings) = @_;
    my $text;
    local $/;                   # slurp mode (undef)
    local *F;                   # create local filehandle
    open(F, "< $filename\0")    || return;
    $text = <F>;                # read whole file
    close(F);                   # ignore retval
    # replace quoted words with value in %$fillings hash
    $text =~ s{ %% ( .*? ) %% }
              { exists( $fillings->{$1} )
                      ? $fillings->{$1}
                      : ""
              }gsex;
    return $text;
}

Works with a hash %fillings containing keys for content, keywords, title etc. and a 
template with the appropriate placeholders.

- Jan
-- 
How many Microsoft engineers does it take to screw in a lightbulb? None. They just 
redefine "dark" as the new standard.

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to