Hi,
mit :ohne Instanz des CGI-Obljekt meinst Du ein z.B. "my" vorne dran
fehlt?
Nein. Normalerweise baut man ein CGI-Objekt (mit "new CGI") und nutzt "param" dann als Methode dieses Objektes.
Unsere Lehrer haben uns gesagt Wir sollen bessser die Datei einlesen
bearbeiten (mit foreach und split etc.) und später wieder
abspeichern.Wegen der Sicherheit.
Dem kann ich mich nicht anschließen.
Zwei Fälle sind denkbar:
a) Dein CGI-Skript ist das einzige, welches diese Datei ändert, und es läuft auch nur ein einziges Mal gleichzeitig.
Dann ist Öffnen der Datei im "append"-Modus (also mit ">>") genauso "sicher" oder "unsicher" wie komplettes Einlesen. Es ist aber performanter - denn der bisherige Inhalt interessiert Dich ja gar nicht.
b) Irgendwer greift gleichzeitig auf diese Datei zu (das kann auch dasselbe CGI-Skript bei mehreren quasi-parallelen Zugriffen sein).
Dann hast Du ein Problem - nämlich daß der letzte dieser Zugriffe eventuell die Ergebnisse aller vorherigen Programmläufe zerstört.
Und das um so sicherer, wenn Du den von den Lehrern beschriebenen Weg gehst - denn in diesem Falle klatscht der letzte _seine_ Sicht der Dinge über die Ergebnisse aller vorherigen Programme drüber, und deren Arbeit ist verloren.
Wenn mehrere Programme die Datei jeweils erweitern (append), _könnte_ es sein, daß das Betriebssystem diese Datei für alle diese Prozesse zum Schreiben offen hält _und_ die angefügten Daten mischt - das wäre dann auch nicht im Sinne des Erfinders. In all diesen Fällen müßtest Du schon das Öffnen der Datei synchronisieren.
Viele Grüße
Michael