simu73: Einem Skalar einen Wert aus externer Datei hinzufügen

Beitrag lesen

Sorry für die späte Rückmeldung. Nach der intensiven Startphase mit 48 Std. fast pausenlos an der Kiste gönnte ich mir auch mal Schlaf, 'ne gute Party und heute sogar "normale" Arbeit.
Aber es funzt! Nach dem Durchbruch am Freitag Abend habe ich seither aus lauter Freude am gelernten noch weiter experimentiert, die Scripte ein bisschen aufgeräumt etc.

Die geschweiften Klammern waren natürlich ein Teil der Lösung:

Wenn du ein hashelement ansprechen willst, verwendest du
$hash{key}     {} statt ()

Der eigentliche Stolperstein lag aber im ".txt"-File. Ich habe da die Werte (und zeitweise auch die Keys) alle fein säuberlich in Anführungszeichen gesetzt, wie ich dies in den Beispielen auf Selfhtml und anderswo gesehen habe. Also z.B.:

  
"GrafBoule" = "off.png"  
"Schnee" = "45"  

Anscheinend gilt dies nur für die direkte Zuweisung von Werten. Geklappt hat's schliesslich so (hab erst hinterher gesehen, dass Beat auch hier ein passendes Beispiel geliefert hat):

  
GrafBoule=off.png  
Schnee=45  

Auch diesen Code benutzte ich schliesslich:

  
my %Aktuelle_Daten;  
open(FH,"<","DB.txt") or die ('Kein Zugriff DB File $!')  
#Zeilenweise auslesen  
while(<FH>){  
  # solange ich eine Zeile bekomme  
  # durchsuche die Zeile nach (key)=(wert) und speichere sie in %Aktuelle_Daten  
  $_ =~ /^(.+?)=(.*)/ and $Aktuelle_Daten{$1} = $2;  
}  
close(FH);  

Und nun konnte ich mit meiner ursprünglichen Idee weiterfahren:

  
my $GrafBoule = my "$Aktuelle_Daten('GrafBoule')";  
my $Schnee = my "$Aktuelle_Daten('Schnee')";  

Nun ist sicher nicht alles perfekt, insbesondere muss ich die Sache noch gegen unbefugte Zugriffe schützen und könnte noch Filter gegen "falsche" (Sonder-)Zeichen einbauen. Aber in Anbetracht der Tatsache, dass ich letzten Mittwoch noch nicht die leiseste Ahnung von CGI's und Perl hatte, ist meine Freude momentan schon recht gross.

Ich hab auch gesehen, dass es wohl noch verschiedenste Lösungswege gegeben hätte - vielleicht auch ganz einfache. Hab leider nicht kapiert, wie Siechfred dies meinte (hab nur "do while" u.ä. gefunden):

»»Du kannst das ganze auch in Textdateien auslagern, welche kleine Perlschnipsel enthalten, die Du mittels do und Konsorten einbindest.

Falls da einem Möglichkeit analog zum einbinden von Dateien wie mit SSI (.shmtl mit .inc Bausteinen) bestehen sollte, sagt mir das jetz auf keinen Fall mehr!

Falls jemand das Resultat anschauen möchte (nebst der funktionierenden Variante sind zum Teil auch noch alternative Versuche zu erkennen):

http://teleskinods.ch/test/aendern.shtml

Rumspielen ist erlaubt (natürlich einfach ohne böse Absichten).

Zur Ansicht des Quellcodes habe ich die ".pl" Scripte hier noch als ".txt" Files gespeichert:

Das Script zum erstellen des HTML-Formulars, welches die Werte erzeugt:
http://teleskinods.ch/test/source/Aendern.txt

Das Script, welches die Formulardaten in die ".txt"-Dateien speichert (und mir vorläufig die Daten zur Kontrolle auch anzeigt):
http://teleskinods.ch/test/source/Speichern.txt

Das Script, welches schliesslich den HTML-Code erzeugt, welcher in die Website eingebunden wird:
http://teleskinods.ch/test/source/Anzeigen.txt

Ein Experimentier- und Kontroll-Script zum Auslesen der Daten aus der ".txt"-Datei:
http://teleskinods.ch/test/source/Auslesen.txt

Die "Original" (d.h. aktuell verwendete) Textdatei zum speichern der Variabeln:
http://teleskinods.ch/test/cgi-bin/AktuellH.txt

Danke nochmals für die Hilfe.
Liebe Grüsse. Simu.