Wie Baue ich Perl reguläre Ausdrücke dynamisch?

Habe ich ein Perl-Skript, dass die Traversen eine Verzeichnis-Hierarchie mithilfe von File::Next::Dateien. Es wird nur die Rückkehr zu den Skript-Dateien, die Ende in ".avi", ".flv", ".mp3", ".mp4" und ".wmv." Es wird auch überspringen Sie den folgenden Unterordner: ".svn" und alle Unterverzeichnisse, die in endet ".frames." Dies ist angegeben in der file_filter und descend_filter Unterprogramme unten.

my $iter = File::Next::files(
        { file_filter => \&file_filter, descend_filter => \&descend_filter },
        $directory );

sub file_filter { 
    # Called from File::Next:files.
    # Only select video files that end with the following extensions.
    /.(avi|flv|mp3|mp4|wmv)$/
}

sub descend_filter { 
    # Called from File::Next:files.
    # Skip subfolders that either end in ".frames" or are named the following:
    $File::Next::dir !~ /.frames$|^.svn$/
}

Was ich tun wollen ist, die erlaubten Dateitypen und-nicht zulässig unter-Verzeichnis-Namen in einer Konfigurationsdatei, so dass Sie kann aktualisiert werden on the fly.

Was ich wissen will ist, wie kann ich den code der Unterprogramme zu bauen regex-Konstrukte basierend auf den Parametern in der Konfigurationsdatei?

/.(avi|flv|mp3|mp4|wmv)$/

$File::Next::dir !~ /.frames$|^.svn$/
  • Kann dir nicht helfen mit deiner Frage, aber das Paket, das Sie mit sieht genial aus. Ich Tat das gleiche mit plain old File::Find und es wurde viel messier. Ich werde versuchen Sie diese. Danke! +1
  • Checkout: search.cpan.org/dist/File-Next
  • p3rl.org/File::Find::Rule möglicherweise besser für Sie, je nach situation.
InformationsquelleAutor Dr. Faust | 2009-05-22
Schreibe einen Kommentar