baseportal
Suche: 
 Forum   Start 

Dateizugriff

ab Version 3 
Verstecken Inhalt
Mit denselben Befehlen wie für den Zugriff auf Datenbanken kann auf Seiten/Templates zugegriffen werden:

Datei lesen

$inhalt=get "seite.htx";

Liest den kompletten Inhalt der Datei seite in die Variable $inhalt ein. Die einzelnen Zeilen sind durch den Zeilentrenner \n getrennt.

Eine Datei kann auch zeilenweise gelesen werden:

@inhalt=get "seite.htx";

Liest den Inhalt der Seite seite in das Array @inhalt ein. Jedes Element des Arrays enthält nun eine Zeile, $inhalt[0] also die erste, $inhalt[1] die zweite usw. Die Zeilentrenner sind jeweils entfernt.

@inhalt=get "seite.htx", "raw";

Belässt die Zeilentrenner \n am Ende jeder Zeile.


Daten zu Datei hinzufügen

put $zusatz, "seite.htx";

Fügt zur Seite seite den Inhalt der Variablen $zusatz hinzu. Existiert die Seite noch nicht, wird sie angelegt.

Es können auch mehrere Zeilen auf einmal hinzugefügt werden, entweder durch eigenhändiges Hinzufügen des Zeilentrenners...

put "Erste Zeile\nZweite Zeile\nDritte Zeile", "seite.htx";

...oder durch Übergabe der einzelnen Zeilen...

put ["Erste Zeile", "Zweite Zeile", "Dritte Zeile"], "seite.htx";

...oder durch Übergabe eines Array-Verweises:

put \@zusatz, "seite.htx";

Jedes Element des Arrays @zusatz entspricht einer Zeile.

put ["Eins", "Zwei", "Drei"], "seite.htx", "raw";

Unterlässt das automatische Hinzufügen der Zeilentrenner, so dass tatsächlich "EinsZweiDrei" geschrieben wird und auch kein Zeilentrenner am Ende hinzugefüht wird.


Inhalt einer Datei ändern

mod $inhalt_neu, "seite.htx";

Ändert den Inhalt der Seite seite in den Inhalt der Variablen $inhalt_neu. Der alte Inhalt der Seite seite geht verloren.

Ebenso wie beim put können mehrere Zeilen durch einen Array-Verweis übergeben werden und auch hier funktioniert das raw:

mod \@inhalt_neu, "seite.htx", "raw";

Die Zeilen des Arrays @inhalt_neu ersetzen den ursprünglichen Inhalt der Seite seite. Zeilentrenner werden dabei nicht automatisch hinzugefügt.


Mit gleichzeitigen Zugriffen umgehen

Oft wird der Inhalt einer Datei gelesen, verändert und dann wieder zurückgeschrieben. Was auf den ersten Blick oder bei einem lokalen Einzelplatzrechner funktioniert, wird bei Web-Anwendungen früher oder später zu Problemen führen, da mehrere Nutzer gleichzeitig auf die Daten zugreifen können.

baseportal erlaubt zur Lösung dieses Problems, dem Befehl mod einen Perl-Code zu übergeben, der mit dem Inhalt der Datei ausgeführt wird. Das Ergebnis des Codes wird in die Datei geschrieben. Es wird dabei sichergestellt, dass während des gesamten Vorgangs kein anderer auf die Datei zugreift. Der Inhalt der Datei wird in $_ bereitgestellt - der Rückgabewert des Codes wird zum neuen Inhalt.

mod sub { ++$_ }, "zaehler.htx";

Liest den Inhalt der Seite zaehler ein, erhöht ihn um 1 und schreibt den neuen Wert zurück. Dieser Code ist "thread-safe".

Durch Anfügen des Parameters line wird der Code zeilenweise durchlaufen. $_ enthält dann den Wert der jeweiligen Zeile:

mod sub { $cnt++; "$cnt. $_" }, "zeilen.htx", "line";

Numeriert die Zeilen der Seite zeilen durch. Bevor nicht die komplette Datei durchgearbeitet wurde kann niemand auf sie zugreifen.

Durch den Parameter all wird die Seite komplett zeilenweise eingelesen und im Array @_ bereitgestellt:

mod sub { reverse @_ }, "zeilen.htx", "all";

Dreht die Reihenfolge aller Zeilen um.


Datei löschen

del "seite.htx";

Löscht die Seite seite.

Letzte Änderung am 23.8.2007, 22:11 - Stichworte: Dateizugriff, Lesen, Schreiben, Ändern, Löschen, Gleichzeitiger Zugriff, raw, all, line

c - o - + 
© baseportal GmbH. Alle Rechte vorbehalten.


powered in 0.06s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!