Skip to main content

Alles für die Homepage... Scripte, Templates, Workshops und Support

Perl – Bestimmte Dateitypen aus Verzeichnis auslesen

Mitunter kommt es vor das man bestimmte Dateien aus einem Verzeichnis auslesen möchte. Ein Fall für grep.

Verschiedene Beispiele

In diesem Beispiel sollen alle htm und html Dateien aus einem Verzeichnis in ein Array gelesen werden.

CODE:
opendir(DIR,"$pfad") or die "Kann $pfad nicht oeffnen $!n";
@files = grep {/^.*(\.htm$|^.*\.html$)/i} readdir DIR;
closedir(DIR);

Möchte man nur alle gif Dateien eines Verzeichnisses auslesen geht das per

CODE:
opendir(DIR,"$pfad") or die "Kann $pfad nicht oeffnen $!n";
@files = grep {/^.*(\.gif$)/i} readdir DIR;
closedir(DIR);

Will man einfach nur alle Dateien auslesen ändert man obigen Code so:

CODE:
opendir(DIR,"$pfad") or die "Kann $pfad nicht oeffnen $!n";
@files = grep {!/^(.|..)$/} readdir DIR;
closedir(DIR);

Das Array @files kann man dann in einer Schleife nutzen um die Dateien auszugeben.

Oder aber man gibt die gefundenen Verzeichnisinhalte sofort aus

CODE:
opendir(DIR,"$pfad"); 
for $dateien (grep {!/^(.|..)$/} readdir DIR) {
print" $dateien<br>n";   
}
closedir(DIR);

 

Anzeige


Ähnliche Beiträge



Kommentare

Dr. Harald Kollmann 28. Januar 2022 um 20:00

Nettes Beispiel!
Eine kleine Anmerkung: die o.G: Beispiele blenden alle Dateien aus, deren Name ein oder zwei Zeichen lang ist.
um nur . und .. aus zu blenden müsste man . ( irgendein Zeichen ) durch vorangestellten \ zu \. = Punkt ersetzen: grep {!/^(\.|\.\.)$/}
grep { !/^\.{1,2}$/} oder grep {!/^[.]{1,2}$/} oder ähnlich tut es auch.

Antworten

Du hast eine Frage oder eine Meinung zum Artikel? Teile sie mit uns!

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *