Hansi: Perl gleichzeitiger Dateizugriff

Beitrag lesen

Hallo,

Ich benutze auch Windows, aber zumindest kann ich auf einer Linux-Oberfläche "überleben". Soweit sollte man es schon beherrschen, also: üben, üben, üben! ;-)

Naja, ich habe zumindest einen Fileserver und einen Webserver zum Testen einrichten können. Den Fileserver hatte ich zuvor unter WinNT eingerichtet und das Miststück ist mir im Schnitt zweimal die Woche abgestürzt. Den Webserver verwende ich nur für den Test meiner Skripte und meiner Homepage's. Auf dem habe ich 3 Virtuelle Host's jeweils mit einer eigenen IP. War aber recht heftig sich dabei von Windows zu lösen und sich auf Windows einzustellen.

Nicht übel, wirklich. Mit dem -e Switch (vergl. perldoc -f -X) kann man es noch verbessern ("-e $file" prüft, ob eine Datei existiert):

sub waittofileclose
  {
  $f = $_;
  $isopen = "$filename.isopen";
  $testagain = 0;

while (-e $isopen && ++$testagain < 20) { select(undef,undef,undef,0.1); }

Ich wußte doch, daß es auch noch besser geht. Danke.

Die Datei brauchst Du übrigens erst vor dem Schreibzugriff zu erstellen. Nebenbei hoffe ich, daß die Verwendung von $f und $filename gewollt ist? ;-)

Das stammt noch aus dem Testskript. Stimmt ist so natürlich nicht richtig und brigt eine Menge Gefahren. Der Parameter $f wurde beim ersten Anlauf nicht richtig übernommen. Deshalb habe ich weiter oben die Variable $filename zweckentfremdet und Sie kurz hier mitverwendet. Da habe ich überigens öfters Schwierigkeiten. In Pascal gibt es andere Richtlinen für Variabeln und Parameter und es funktioniert nur eine Vorwärtsdeklaration. D.h. Die Variable muß definiert sein, und das auch vor dem Verwenden. In Perl kann ich irgendwo eine Variable verwenden und automatisch ist sie für das ganze Skript sichtbar. Das ist natürlich nicht schlecht. Man muß sich halt darauf einstellen.

Vielleicht kann man ja noch alle 10 oder 100 Aufrufe ein Backup der Datendatei anlegen. Natürlich nur, wenn die Datendatei nicht die Größe Null hat. In diesem Fall müßte man das Backup zurückkopieren.

Auch nicht schlecht. Die Größe eines Files bekommt man mit -s $file ;-)

Kommt darauf an. Wie groß sind Arbeitsspeicher und Swapdatei? ;-)

Also auf meinem Server 24MB und 120 MB. Habe ich willkürlich gewählt.

Prinzipiell gibt es dazu keine Begrenzung.

Und wie es der Teufel will, habe ich gestern noch in iregendeiner Dok eine kurze Erläuterung dazu gefunden. Es gbt demnach keinerlei Beschränkungen.

Gruß Hansi