andrea: cgi: @required = ("name", "comment"); aus TXT-Datei einlesen

Hallo,

Hab ein riesiges Problem:

Ich möchte die Zeile

@required = ("name", "comment");

aus einem Script in eine TXT-Datei auslagern und von dort
einlesen und weiterverarbeiten lassen.

Hab‚s bisher so versucht:

In der required.txt:

"name", "comment"

Im cgi-File:

open (REQUIRED, "required.txt");
@required = <REQUIRED>;
close(REQUIRED);

Wenn ich @required printe erscheint zwar der Inhalt, das Script arbeitet aber nicht weiter mit den Daten.

Habt Ihr eine Lösung?

Danke schonmal im voraus.

Gruß,

  • Andrea -
    (grübel, grübel...)
  1. Hallo Andrea,

    In der required.txt:

    »»    "name", "comment"

    Im cgi-File:

    »»    open (REQUIRED, "required.txt");
    »»    @required = <REQUIRED>;
    »»    close(REQUIRED);

    Wenn Du so wie oben verfährst, steht im ersten Element von @required ($required[0]) die angegebene Textzeile, weil der Eingabeoperator <> Dateien zeilenweise in ein Array einliest. Sofern also $/ eq "\n" zutrifft, steht in jedem Element von @required eine Zeile Deiner Datei.
    Wenn Du so etwas wie @required = ("name","comment"); erreichen möchtest, kannst Du auf verschieden Art und weise vorgehen:

    1. In der required.txt: (Auslagern von Code)
            @required = ('name','comment');
            1;   # die Eins ist afaik hier nicht nötig, da hier eine Zuweisung stattfindet, die imho "true" ist

    Im Skript: (der Code wird einfach eingebunden)
          require 'required.txt';

    1. In der required.txt: (die Werte durch ein einfaches Trennzeichen separiert)
            name,comment

    Im Skript: (einlesen der ersten Textzeile und Splitten der Werte beim angegebenen Trennzeichen)
          open (REQUIRED, "required.txt") die "YourFehlermeldung $!";
             @required = split /,/, <REQUIRED>;
             chomp $required[-1]; # Zeilenvorschub aus dem letzten Element entfernen, falls vorhanden
          close(REQUIRED);

    Ich hoffe das hilft Dir weiter :-) Allerdings solltes Du schon noch versuchen, den Code des Skriptes zu verstehen, damit Du auch weist, warum Deine Version nicht funktionieren konnte.

    Gruß AlexBausW

    P.S.: untested && TIMTOWTDI

    1. Hallo Alex!

      Vielen Dank! Klappt SUPER!!!
      Hab grad erst angefangen mit cgi. Muß ich unbedingt lernen!
      Ist ne tolle Sache.

      • Andrea -

      Hallo Andrea,

      In der required.txt:
      »»    "name", "comment"

      Im cgi-File:

      »»    open (REQUIRED, "required.txt");
      »»    @required = <REQUIRED>;
      »»    close(REQUIRED);

      Wenn Du so wie oben verfährst, steht im ersten Element von @required ($required[0]) die angegebene Textzeile, weil der Eingabeoperator <> Dateien zeilenweise in ein Array einliest. Sofern also $/ eq "\n" zutrifft, steht in jedem Element von @required eine Zeile Deiner Datei.
      Wenn Du so etwas wie @required = ("name","comment"); erreichen möchtest, kannst Du auf verschieden Art und weise vorgehen:

      1. In der required.txt: (Auslagern von Code)
              @required = ('name','comment');
              1;   # die Eins ist afaik hier nicht nötig, da hier eine Zuweisung stattfindet, die imho "true" ist

      Im Skript: (der Code wird einfach eingebunden)
            require 'required.txt';

      1. In der required.txt: (die Werte durch ein einfaches Trennzeichen separiert)
              name,comment

      Im Skript: (einlesen der ersten Textzeile und Splitten der Werte beim angegebenen Trennzeichen)
            open (REQUIRED, "required.txt") die "YourFehlermeldung $!";
               @required = split /,/, <REQUIRED>;
               chomp $required[-1]; # Zeilenvorschub aus dem letzten Element entfernen, falls vorhanden
            close(REQUIRED);

      Ich hoffe das hilft Dir weiter :-) Allerdings solltes Du schon noch versuchen, den Code des Skriptes zu verstehen, damit Du auch weist, warum Deine Version nicht funktionieren konnte.

      Gruß AlexBausW

      P.S.: untested && TIMTOWTDI