Cheatah: Directory lesen mit Perl

Beitrag lesen

Hi,

Ein Perlscript soll bei jedem Aufruf eine Datei im Verzeichniss anlegen, diese Dateien sollen als Namen eindeutige, durchgehende Nummern haben (z.B. 00001.dat ; 00002.dat...), was für Funktionen gibt es in Perl um festzustellen, welche Dateinamen schon existieren, und wie verhindere ich Kollisionen, wenn sich zwei Aufrufe überschneiden (sehr unwahrscheinlich aber nicht unmöglich).
Die Möglichkeit eine zusätzliche Log-Datei mit einer Zählvariable einzurichten, fällt mir zwar spontan auch ein, aber das muss doch eleganter gehen.

ich finde die Zählerdatei schon recht elegant, zumindest wenn Du im Verzeichnis 15.000 Dateien hast. Ansonsten gibt es (neben -e, siehe Erik) die Befehle opendir und readdir zu diesem Zweck.

Um Überschneidungen zu vermeiden sollte das Script "öffentlich mitteilen", daß es gerade eine neue Datei erstellt, andere Instanzen sollten bei dieser Mitteilung einfach warten. Ich mache das immer, indem ich eine Dummy-Datei erstelle, die ich vorher auf Existenz prüfe. Ist sie da, warte ich mit sleep eine Sekunde. Ist sie auch nach 5 Sekunden noch da, war's offenbar eine Fehlmitteilung und ich schreibe die Datei trotzdem.

Cheatah