PERL ONELINER (DOCUMENTO SCADUTO) ------------------------------------------------------------------------------ Indice Argomenti 1. Tips & Tricks : Perl 1.1. Perl in one line 1.1.1. Sostituzione veloce del testo di uno o più file 1.1.2. Stampare il contenuto di un file di testo da un'occorrenza in poi 1.1.3. Verificare l'header di una pagina html remota 1.1.4. Generare una pwd casuale 1.1.5. Emulare 'wc -l' 1. Tips & Tricks : Perl 1.1. 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. 1.1.1. 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. 1.1.2. 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. 1.1.3. 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. 1.1.4. 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! 1.1.5. 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'.