Mostrando las entradas con la etiqueta pol. Mostrar todas las entradas
Mostrando las entradas con la etiqueta pol. Mostrar todas las entradas

viernes, 21 de noviembre de 2014

PoL: Factorial

Factorial en PoL:

perl -le 'sub k { return ($_[0] * (k($_[0]-1))) if ($_[0] > 1);return 1;} print k($ARGV[0]);' 2

básicamente Factorail es:

n * n-1 * n-2 * ... * 1

Para hacer una funcion recursiva simplemente vemos

n * (n-1) * (n-2) ... * 1

Lo que basicamente indica la pate que uno tiene que usar como recursiva:

(n-1)

Y para perl

sub fact {
return  (  $_0] * (fact($_[0]-1)) if ($_[0] > 1) ;
return 1;
}


miércoles, 27 de abril de 2011

substitución con ejecución con lo obtenido

Hay varias veces, sobre todo procesando logs, que necesitamos verlo de mejor manera (por ejemplo, los logs del squid, que ponen la hora en epoch).

Ejemplo:
1303873213.829     21 127.0.0.1 TCP_MISS/200 2993 GET cache_object://localhost/info - NONE/- text/plain
1303873217.363     21 127.0.0.1 TCP_MISS/200 2993 GET cache_object://localhost/info - NONE/- text/plain

Para poder ver mejor los logs, simplemente con POL (Perl One Liner), es simple:

$ perl -pe 's/^(\d+(?:\.\d{3}))\s/scalar(localtime($1)) /e' access.log

La salida va a pasar a ser:

Wed Apr 27 00:00:13 2011    21 127.0.0.1 TCP_MISS/200 2993 GET cache_object://localhost/info - NONE/- text/plain
Wed Apr 27 00:00:17 2011    21 127.0.0.1 TCP_MISS/200 2993 GET cache_object://localhost/info - NONE/- text/plain