PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Perl Dateien loeschen



Vagabundo
19-04-2009, 19:21
Hallo,

kann mir mal jemand schreiben weshalb das nicht funktioniert:

qx(rm -f $dir.'*');

oder wie man es besser(richtig) machen kann, OHNE ein Modul dafuer zu laden?

Herzliche Gruesse
Christian

Sid Burn
20-04-2009, 13:38
oder wie man es besser(richtig) machen kann, OHNE ein Modul dafuer zu laden?

Indem du die eingebaut Funktion "unlink" nutzt.

unlink($file);

Wenn du mehrere löschen möchtest mit pattern wie in deinem beispiel dann unlink() und glob() kombinieren.

unlink glob("$dir/*")

Oder eben mit "opendir()" das verzeichnis öffnen, durchgehen und wenn es matcht dann mit unlink() löschen.

Ansonsten ist "geht nicht" eine ziemlich unbrauchbare aussage. Meine Glaskugel sagt aber das es wohl an $dir liegt und probleme gibt zwischen relativ/absolute pfade etc.


Ansonsten gibt unlink() zurück wieviele Dateien es gelöscht hat. Wenn du die dateien also einzelnd durchgehst kannst du testen ob es 0 zurück gibt und dann die Meldung in $! ausgeben, dann siehst du warum man es nicht löschen konnte (kann auch an dateirechte liegen). Ansonsten Verzeichnisse/Dateinamen immer mit "File::Spec" zusammen bauen.

Vagabundo
21-04-2009, 05:15
Hallo,

danke fuer Deine Ausfuehrungen.

Ich habe es jetzt mit glob und unblink geloest. Klappt prima

Christian

jan61
21-04-2009, 21:52
Moin,


Hallo,

danke fuer Deine Ausfuehrungen.

Ich habe es jetzt mit glob und unblink geloest. Klappt prima

Christian

Aber aufpassen: Verzeichnisse nicht mit unlink löschen! Dafür gibts rmdir, nähere Infos siehe "perldoc -f unlink".

Jan