Thomas: Variablen parsen

Hi,

wenn ich folgendes mache:

...
$name="Thomas";
open (in,"template.html");
@data=<in>;
close in;
print @data;
...

und mein Template sieht etwa so aus:

<html>
<body>
Hallo $name
</body>
</html>

Dann gibt das Script wirklich "$name" aus, anstatt "Thomas".
Das ist sicher aus Sicherheitsgründen so, oder?
Gibt es eine Möglichkeit, daß direkt wie bei der Vorgehensweise ohne Datei zu ersetzen?

Gruß
Thomas

  1. Sowas geht glaub ich nur mit patternmatching, also nicht wirklich
    so das die variable eingefügt wird. und dann auch nur zeilenweise:

    $name="Thomas";
    open (in,"template.html");
    while(<in>)
    {
     $line = $_;
     $line =~ s/$name/$name/g;
    print $line;
    }
    close in;

    Hier wird $name als String durch den inhalt der variable $name
    ersetzt. genauso könnte in der datei auch __pluffz__ stehen,
    dann würde die zeile

    $line =~ s/__pluffz__/$name/g;

    lauten.

    gruß
      Achim

  2. Hallo Thomas,

    schau Dir mal das Modul HTML::Template an (zu finden bei CPAN).

    greets
    myMojito

    --
    -------------------------------------------
    Mode ist eine Variable, Stil eine Konstante