= Tips & Tricks : Perl = === Perl in one line === Non tutti sanno che Perl è utilizzabile anche dal ''prompt'' (chiaramente sia su Windows che su Linux e tutti i sistemi che supportano Perl) e risolve facilmente moltissimi problemi che altrimenti bisognerebbe affrontare con software dedicati o complessi tipo script bash. ==== Sostituzione veloce del testo di uno o più file ==== # perl -i -pe "s/vecchiotesto/nuovotesto /" * Serve a sostituire '''vecchiotesto''' in '''nuovotesto''' all'interno di tutti i file (di testo) della directory. Chiaramente se al posto di "*" si mette il nome di un file la sostituzione viene effettuata solo in quel file: # perl -i -pe "s/vecchiotesto/nuovotesto /" pippo.txt C'è da dire poi che '''vecchiotesto''' deve rispettare le regole delle RE. ==== Stampare il contenuto di un file di testo da un'occorrenza in poi ==== # perl -ne '/foo/...print && 0' test.txt Nell'esempio chiaramente "foo" è la parola da cercare (o meglio la RE che deve fare il match) e test.txt il file di testo nel quale cercare. ==== Verificare l'header di una pagina html remota ==== perl -MLWP::UserAgent -e 'exit 1 if LWP::UserAgent->new->get(shift)->header("WWW-Authenticate")=~/foo/' 1.2.3.4 Grazie a questo onliner è possibile verificare la presenza della stringa (o RE) "foo" all'interno dell'header della pagina HTML ritornata dal sito http://10.20.30.40. Se la RE ritorna vero il oneliner ritorna il valore 1 altrimenti "undef". Il Oneliner richiede che sia installato nel sistema il modulo Perl LWP::UserAgent. ==== Generare una pwd casuale ==== perl -e 'print ((0..9,a..z)[rand(31)]) for 1..8' Per una soluzione più funzionale si consiglia APG, ma per una soluzione onthefly just Perl! ==== Emulare 'wc -l' ==== cat miotesto.txt | perl -ne 'eof()?print$i,$/:$i++' A chi non è capitato di utilizzare 'wc -l' per contare le righe generate da una qualche comando, ma se wc non è presente nel sistema? ecco un piccolo trucchetto. L'esempio conta le righe generate dall'output di 'cat miotesto.txt'.