Es soll ein Verzeichnis rekursiv nach Dateien eines bestimmten Musters durchsucht werden. Dabei kommt das Standard-Modul File::Find zum Einsatz.
#!usr/bin/perl -w use strict; use warnings; use File::Find; my @files; # finde alle Dateien mit der Erweiterung txt my $muster = '.*txt'; find(\&bedingung, "dir1"); # die gesuchten Dateien stehen in @files # und koennen weiterverarbeitet werden sub bedingung { if ( $File::Find::name =~ /^$muster$/ ) { push(@files, $_); } return; }
Das Modul File::Find durchsucht Verzeichnisse standardmäßig rekursiv. Für jeden gefundenen Eintrag stehen drei Variablen zur Verfügung: $_ enthält den vollständigen Pfad des gefundenen Eintrages einschließlich des Dateinamens, $File::Find::dir enthält das aktuelle Verzeichnis und $File::Find::name enthält den Namen der gefundenen Datei. Soll nicht rekursiv gesucht werden, ist in den meisten Fällen der Einsatz des Moduls nicht nötig, hier genügt der Einsatz der Perl-Funktionen für Verzeichnisse (opendir, readdir und closedir).
Siehe auch Dokumentation zu File::Find.