EMan: Array auslesen und dessen Daten an ein Template übergeben

Hi Zusammen,

also... ich möchte die Werte aus einem Array auslesen und diese dann an ein Template weitergeben. Eigentlich ganz simpel, nur irgendwie will das nicht so funktionieren... ich habs wie folgt versucht:

open(TEMPLATE, "<template.html") print "Das von ihnen gewünschte File konnte nicht gefunden werden!";
while(<TEMPLATE>) { $content .= $_; }
close TEMPLATE;

foreach $wert (@werte)
{
  $content =~ s/<%wert%>/$wert/gi;
}

print $content;

---

Leider hat das so nicht funktionieren wollen... <%wert%> ist im eigentlich Template ca. 30 mal vorhanden... <%wert%> soll halt immer den nächsten wert des arrays zugewiesen bekommen.
Ich hoffe das mir jemand helfen kann...

Schonmal danke,

CU EMan

  1. Hallo HE.. äähh EMan ;-)

    foreach $wert (@werte)
    {
      $content =~ s/<%wert%>/$wert/gi;
    }
    Leider hat das so nicht funktionieren wollen... <%wert%> ist im eigentlich Template ca. 30 mal vorhanden... <%wert%> soll halt immer den nächsten wert des arrays zugewiesen bekommen.

    So auf die schnelle würde ich sagen, daß Du beim Regulären Ausdruck das g für 'globale Ersetzung' mal weglassen solltest. Damit ersetzt Du nämlich schon beim ersten Durchgang alle <%wert%>s mit dem erste $wert Deiner @werte.

    Gruß AlexBausW

    1. Hallo HE.. äähh EMan ;-)

      foreach $wert (@werte)
      {
        $content =~ s/<%wert%>/$wert/gi;
      }
      Leider hat das so nicht funktionieren wollen... <%wert%> ist im eigentlich Template ca. 30 mal vorhanden... <%wert%> soll halt immer den nächsten wert des arrays zugewiesen bekommen.

      So auf die schnelle würde ich sagen, daß Du beim Regulären Ausdruck das g für 'globale Ersetzung' mal weglassen solltest. Damit ersetzt Du nämlich schon beim ersten Durchgang alle <%wert%>s mit dem erste $wert Deiner @werte.

      Hi nochmal,
      wenn er wenigstens etwas ersetzen würde... aber nichtmal das tut er... das mit dem gi is mir schon klar... aber die <%wert%> übergabe bleibt gänzlich lehr.

      CU EMan

      Gruß AlexBausW

      1. Hallo Eman

        foreach $wert (@werte)
        {
          $content =~ s/<%wert%>/$wert/gi;
        }

        [...]

        wenn er wenigstens etwas ersetzen würde... aber nichtmal das tut er... das mit dem gi is mir schon klar... aber die <%wert%> übergabe bleibt gänzlich lehr.

        Hast Du den Codeschnipsel schon mal alleine von der Kommandozeile gestartet? Was steht den in $content drin? und lass dir mal @werte ausgeben.

        Gruß AlexBausW

        P.S.: Du solltes mit 'die' und $! ("Fehlercode") bei fehlgeschlagenem open() das Skript beenden, weil das nachfolgende dann wenig Sinn macht, und etliche Fehlermeldungen produziert, wenn man 'Warnings' eingeschaltet hat.

  2. Hi!

    Wenn ich das richtig verstanden habe, hast Du in dem Template eine bestimmte Anzahl mal die Zeichenkette "<%wert%>" stehen, und willst die Elemente aus @werte auf diese verteilen, also $werte[0] in das erste <%wert%> usw. Und ich nehme an, dass @werte genau so viele Elemente hat (und dies sichergestellt ist), wie oft der Platzhalter im Template vorkommt, sonst wuerde das alles wenig Sinn machen.

    Nun wohl denn, da sollten es die Zeilen
        
        $i = 0;
        $content =~ s/<%wert%>/$werte[$i++]/ige;
        
    tun, denke ich. (untested)

    HTH && So long