Perl viene fornito con un modulo File :: Find che permette a un utente di cercare un file . Il File :: Find :: find funzione scende nelle sottodirectory e visita ogni file una volta , passando a una funzione che fornisci . Dal momento che Perl è un linguaggio di programmazione multi-piattaforma , la funzione può essere utilizzato su molti sistemi operativi diversi . Istruzioni
1
Importare il " File :: Find " modulo usando l'opzione "Usa " parola chiave . Tutte le distribuzioni di Perl dovrebbero venire con il "File :: Find " del modulo , quindi non è necessario installarlo separatamente : " usare File :: Find ; "
2
Scrivi una funzione di filtro in quanto il " File :: Cerca :: find " funzione in realtà non fare alcun filtraggio . Creazione di una funzione di filtraggio che memorizza i file in una lista , li stampa , li cancella , li muove o fa qualsiasi altra cosa si vuole fare con i file. La funzione di filtro non ha argomenti , e il nome del file attualmente visitato da File :: Find :: trovare sarà nella variabile predefinita $ _ . In questo esempio, il filtro funzione filtra i file in base al loro nome di file e una espressione regolare : "sub filtro {if ( . $ _ = ~ /\\ Html $ /i) { print" $ _ \\ n "; } } " < br >
3
richiamare la funzione " File :: Find :: trovare " , dal momento che il "Usa " parola chiave importata tutte le funzioni di File :: Find nello spazio dei nomi globale . La funzione "Trova " richiede due argomenti . Il primo è un riferimento alla funzione di filtro , la cui sintassi sembra un po 'strano .
4
Creare un riferimento alla funzione "Filtro" , utilizzando il codice " \\ & filtro" . La barra rovesciata è l'operatore di riferimento , il che significa che farà un riferimento di tutto ciò che è passato a esso . Di solito omesso, l' & è la funzione o il prefisso subroutine , usata per indicare le funzioni . E 'utilizzato solo da $ è per gli scalari , @ per liste e " %" per gli hash .
5
Utilizzare il secondo parametro di trovare la directory di base alla ricerca. Questo dovrebbe essere o un percorso assoluto o la directory corrente , indicato con un "." . " find ( \\ & filtro , ". ") ; "
6
passare una subroutine anonima invece di un riferimento alla funzione . La parola chiave "sub " fa una subroutine anonima e restituisce un riferimento ad essa , che è utile per una funzione come File :: Find :: trovare se la funzione che si desidera è molto breve . Esso mantiene tutto il codice in un posto, in modo che il lettore del codice non deve cercare la funzione di filtro . Questo esempio basta stampare tutti i file trovati, senza filtro regex : "trovare (sub { print" $ _ \\ n "; } , ". ") ; "