Christof: Variablen werden nicht als solche erkannt

Hallo erstmal!
Ich habe folgendes kleines Problem.
In einer txt datei steht der HTML Quellcode für eine Ausgabe per Perl. Das ganze sieht dann folgendermaßen aus:

#$template ist die txt datei!
open(SETUP, "<$template") || die "Datei nicht gefunden";
@template_file = <SETUP>;
close(SETUP);

$name="Janzen";

print header ();
foreach (@template_file) {
    print $_;
}

in dem Quelltext ist auch folgende Zeile enthalten:

<input type="text" name="name" value="$name">

Normalerweise würde die Variabler $name durch "Janzen" ersetzt, aber das geschieht leider nicht. Ich hab noch nicht verstanden, warum das so ist, und wie ich das beheben könnt.

Mfg Christof

  1. Hallo erstmal!
    Ich habe folgendes kleines Problem.
    In einer txt datei steht der HTML Quellcode für eine Ausgabe per Perl. Das ganze sieht dann folgendermaßen aus:

    #$template ist die txt datei!
    open(SETUP, "<$template") || die "Datei nicht gefunden";
    @template_file = <SETUP>;
    close(SETUP);

    $name="Janzen";

    print header ();
    foreach (@template_file) {
        print $_;
    }

    in dem Quelltext ist auch folgende Zeile enthalten:

    <input type="text" name="name" value="$name">

    Normalerweise würde die Variabler $name durch "Janzen" ersetzt, aber das geschieht leider nicht. Ich hab noch nicht verstanden, warum das so ist, und wie ich das beheben könnt.

    Mfg Christof

    Hi,

    so geht das auch nicht. Du hast den File Inhalt in einem Array gespeichert
    und versuchst hier etwas zu ersetzen.

    Schnelle Lösung, evtl. nicht die eleganteste:
    Du durchsuchst den Array nach dieser Zeile und tauschst die
    Zeile aus.

    Gruß
    Jürgen Schneider

    1. Hallo erstmal!
      Ich habe folgendes kleines Problem.
      In einer txt datei steht der HTML Quellcode für eine Ausgabe per Perl. Das ganze sieht dann folgendermaßen aus:

      #$template ist die txt datei!
      open(SETUP, "<$template") || die "Datei nicht gefunden";
      @template_file = <SETUP>;
      close(SETUP);

      $name="Janzen";

      print header ();
      foreach (@template_file) {
          print $_;
      }

      in dem Quelltext ist auch folgende Zeile enthalten:

      <input type="text" name="name" value="$name">

      Normalerweise würde die Variabler $name durch "Janzen" ersetzt, aber das geschieht leider nicht. Ich hab noch nicht verstanden, warum das so ist, und wie ich das beheben könnt.

      Mfg Christof

      Hi,

      so geht das auch nicht. Du hast den File Inhalt in einem Array gespeichert
      und versuchst hier etwas zu ersetzen.

      Schnelle Lösung, evtl. nicht die eleganteste:
      Du durchsuchst den Array nach dieser Zeile und tauschst die
      Zeile aus.

      Gruß
      Jürgen Schneider

      Naja, schnelle möglichkeit wäre es ja, aber es ist halt nicht nur eine Variable sondern ein paar mehr..... Keine andere möglichkeit

    2. Hallo Christof und Jürgen,

      ...

      Schnelle Lösung, evtl. nicht die eleganteste:
      Du durchsuchst den Array nach dieser Zeile und tauschst die
      Zeile aus.

      oder so:

      foreach (@template_file) {
        s/$(\w+)/${$1}/g;
        print $_;
      }

      (aus: Perl Cookbook)

      Gruß

      Christoph

      1. Hallo Christof und Jürgen,

        ...

        Schnelle Lösung, evtl. nicht die eleganteste:
        Du durchsuchst den Array nach dieser Zeile und tauschst die
        Zeile aus.

        oder so:

        foreach (@template_file) {
          s/$(\w+)/${$1}/g;
          print $_;
        }

        (aus: Perl Cookbook)

        Gruß

        Christoph

        Vielen vielen Dank! Hat geklappt. Vielleicht sollte man sich das Buch doch mal beschaffen, auch wenn's so teuer ist....
        Christof

        1. Hallo Christof und Jürgen,

          ...

          [...]

          (aus: Perl Cookbook)

          Gruß

          Christoph

          Vielen vielen Dank! Hat geklappt. Vielleicht sollte man sich das Buch doch mal beschaffen, auch wenn's so teuer ist....
          Christof

          Ich möchte Dir und allen anderen Perl-Interessierten hier im Forum das Perl CD Bookshelf empfehlen. (Nein, ich habe von dieser Empfehlung keinerlei Vorteile!)

          http://www.oreilly.com/catalog/perlcdbs/

          ASIN: 1565924622
          Bei amazon.de für EUR 66,47 (DM 130,00) zu haben - noch: wird nicht mehr gedruckt.

          http://www.oreilly.com/catalog/perlcdbs2/

          ISBN: 0596001649
          Bei amazon.de für EUR 95,18 (DM 186,16) zu haben, oder beim Buchhändler deiner Wahl.

          Tux2000

  2. Hallo!

    [...]

    aber das geschieht leider nicht. Ich hab noch nicht verstanden, warum das so ist, und wie ich das beheben könnt.

    ..das liegt daran, daß du eine Text-Datei-einliest - diese wird aber nicht durch den Perl-Interpreter  geschickt - also an welcher Stelle soll die Variableninterpolation (Ersetzen von $name durch "Janzen") stattfinden?

    Gruß Sven

    1. Hallo!

      [...]

      aber das geschieht leider nicht. Ich hab noch nicht verstanden, warum das so ist, und wie ich das beheben könnt.
      ..das liegt daran, daß du eine Text-Datei-einliest - diese wird aber nicht durch den Perl-Interpreter  geschickt - also an welcher Stelle soll die Variableninterpolation (Ersetzen von $name durch "Janzen") stattfinden?

      Gruß Sven

      Tja, die Datei soll ja anschließend im Browser ausgegeben werden. Da spätestens sollte die Variable ersetzt sein :-)