Se muestran ahora unos cuantos ejemplos de one liners , en ocasiones combinados con programas del shell , para ilustrar su uso. Hay muchos más en la Red.
-i
, de esta manera: perl -i -pe 's/\r//g' DOS.txt
):
$ perl -pe 's/\r//g' DOS.txt > UNIX.txt
$ perl -nle 'print uc'
@F[-2,-1]
) desde una tubería (usa
echo):
$ echo a b c | perl -lane 'print "@F[0..1]"'
$ find . | perl -ne'chomp; next unless -e; $original = $_; s/\.dos/\.unix/; next if -e; rename($original,$_)'
$ perl -i.bak -pe 's/\$var1/\$var2/g' *.pl
$ perl -lne '/expresion regular/ and print'
$ perl -pe '$_ = "$. $_"'
$ perl -ne 'print "$. $_" if 1 .. 20'
$ perl -e 'print reverse(<>)'
$ perl -lane '$total += scalar(@F); END { print $total }'
$ perl -lne 'while(/(\w+)/g){ $total{$1}++ }; END{ print "$_ $total{$_}" for sort{$total{$b}<=>$total{$a}}(keys(%total))}'
$ perl -nle 'print if /^=/ .. /^=cut/'
map
sobre los valores de un vector (ver secciones 2.7.1 y 2.7.4):
$ perl -le 'print map { (0..9)[rand(10)] } 1..8'
$ perl -alne 'print "@{[map { abs } @F]}"'
$ perl -lane '@F=sort{$b<=>$a}(@F); print $F[0]'
$ perl -lane 'scalar(@F) > 3 and print'
var1 1 2 3 4 5 6 var2 7 8 9 10 11 12 ...
$ perl -ane '$f++; for $c (1 .. @F){ $data[$f][$c]=$F[$c-1] }; $maxc=@F if(@F>$maxc); END{ for $c (1 .. $maxc){ for $ff (1 .. $f){ print "$data[$ff][$c]\t" } print "\n"} }'
$ perl -MAlgorithm::Permute -le '$l = [1,2,3,4,5]; $p = Algorithm::Permute->new($l); print @r while @r = $p->next'
./
) por el puerto 8000,
con ayuda del módulo
HTTP::Server::Brick:
$ cpanm HTTP::Server::Brick $ perl -MHTTP::Server::Brick -e '$s=HTTP::Server::Brick->new(port=>8000); $s->mount("/"=>{path=>"."}); $s->start'
perl -e 'map {print " "x$_->[0],$xx=(keys(%x))[int(rand 4)],"-"x$_->[1],$x{$xx},"\n"} (@_=([5,0],[4,2],[3,3],[2,4],[1,4],[0,3],[0,2],[1,0]),reverse @_) while (%x=(a,t,t,a,g,c,c,g))'
Bruno Contreras-Moreira