cgi: @required = ("name", "comment"); aus TXT-Datei einlesen
andrea
- cgi
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ß,
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:
Im Skript: (der Code wird einfach eingebunden)
require 'required.txt';
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
Hallo Alex!
Vielen Dank! Klappt SUPER!!!
Hab grad erst angefangen mit cgi. Muß ich unbedingt lernen!
Ist ne tolle Sache.
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:
- 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" istIm Skript: (der Code wird einfach eingebunden)
require 'required.txt';
- In der required.txt: (die Werte durch ein einfaches Trennzeichen separiert)
name,commentIm 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