Perl kommt mit einem File :: Find -Modul, das ein Benutzer für eine Datei suchen können. Das File :: Find :: find Funktion steigt in Unterverzeichnisse und besucht jede Datei einmal , und übergeben Sie an eine Funktion zur Verfügung stellen. Da Perl ist eine Cross-Plattform- Programmiersprache , kann die Funktion auf vielen verschiedenen Betriebssystemen eingesetzt werden . Anleitung
1
Import der " File :: Find "-Modul mit der "Benutzen" -Schlüsselwort. Alle Perl -Distributionen sollten mit dem " File :: Find "-Modul kommen , so ist es nicht notwendig , sie separat zu installieren: " use File :: Find; "
2
schreiben Filterfunktion seit dem "File :: Find :: find "-Funktion nicht tatsächlich keine Filterung . Erstellen Sie eine Filter-Funktion , die Dateien in einer Liste speichert , druckt sie , löscht sie , sie bewegt oder tut, was Sie sonst noch mit den Dateien tun möchten. Die Filterfunktion hat keine Argumente , und der Name der Datei, die gerade besucht von File :: Find :: finden in der Standard- Variable $ _ sein . In diesem Beispiel sind die Filter-Funktion Filter -Dateien auf ihren Dateinamen und einem regulären Ausdruck basiert : "sub filter { if ( . $ _ = ~ /\\ Html $ /i ) {print" $ _ \\ n "; }} "
3
Rufen Sie den " File :: Find :: find "-Funktion , da die "Use " keyword alle Funktionen von File :: Find in den globalen Namespace importiert. Das "Suchen" -Funktion nimmt zwei Argumente . Die erste ist ein Verweis auf die Filter-Funktion , die Syntax von denen sieht ein wenig seltsam.
4
Erstellen Sie einen Verweis auf die "Filter "-Funktion , indem Sie den Code " \\ & Filter" . Der Backslash ist das Referenz-Operator , dh es wird eine Referenz aus dem, was wird an sie übergeben zu machen. Gewöhnlich weggelassen , ist die & die Funktion oder Unterroutine Präfix verwendet werden, um Funktionen zu bezeichnen. Es ist nur wie $ verwendet wird, ist für Skalare , @ für Listen und "%" für Hashes.
5
Verwenden Sie den zweiten Parameter , um die Basis zu durchsuchende Verzeichnis zu finden. Dies sollte entweder ein absoluter Pfad oder das aktuelle Verzeichnis durch einen bezeichnet werden. " " . " find ( \\ & filter ,". " ); "
6
Pass eine anonyme Subroutine anstelle einer Funktion Referenz. Die "sub" Schlüsselwort macht eine anonyme Subroutine und gibt einen Hinweis darauf , was nützlich ist, für eine Funktion wie File :: Find :: find , wenn die Funktion, die Sie wollen, ist sehr kurz. Es hält den gesamten Code in einem Ort , so dass der Leser des Codes muss nicht für die Filter-Funktion suchen. Dieses Beispiel wird nur drucken alle Dateien gefunden , ohne Regex Filter : " finden ( sub { print" $ _ \\ n "; }," . "); "