Re: Scripts...
Bueno, de nada, pero ahora te cuento...
On Mon, Oct 26, 1998 at 12:09:24AM -0300, Phillip Neumann wrote:
> Primero que nada gracias por la ayuda....
> La verdad es que no entiendo nada de perl, asique no se que hace el
> script que me diste:
>
> #!/usr/bin/perl
> (1) while (<>) {
> (2) chomp;
> (3) if (/Hoy\, \d* me he conectado/) { $conectado=$1 }
> (4) if (/Hoy\, \d* me he desconectado) { $desconectado=$1 ;
>
> $x=$desconectado-$conectado if $
> desconectado > $conectado;
> }
> }
>
> print "\n Tiempo total=$tiempo";
>
>
> (1) while (<>) significa que haga los pasos 2,3,4 hasta que pase que?
El <> es equivalente a <STDIN> y la construcción es una
simplificación de
while ($@=<STDIN>)
que quiere decir "mientras haya algo que leer de la entrada
estándar"
> (2) chomp: supongo que esto hace que lea algo...
No, recorta la línea para que no tenga Ctrl-N al final. Sin
parámetros actua por la variable por defecto ($@ si no recuerdo mal)
> (3) if (/Hoy\, \d* me he conectado/) { $conectado=$1 }
>
> Esta parte me interesa...
> si se cumple la condicion entre () se le asigna que valor a
> $conectado? (que es $1??)
Si te fijas se trata de una expresión regular, por eso ciertos
caracteres (la coma, por ejemplo) va con una barra para quitarle el sentido
que tiene en estas. El \d* significa cualquier número decimal.
De hecho me he equivocado, debería ser (\d*) para que luego
$1 tome el valor de la primera coincidencia de este valor, es decir, $1
valdrá lo que todos los números que haya dentro de la frase...
> mi archivo /var/log/internet.log se ve asi:
>
> Hoy, 21 de Oct a las 08:09:19 PM, --------= connecion
> Hoy, 21 de Oct a las 08:09:30 PM, --------= desconeccion
>
> Entoces como quedaria el script?? if (Hoy\, \d* --------=
> connecion) {$conectado=$1} ???
Umm... primero pon (\d*) en lugar de eso. Segundo, los - creo que
tienes que ponerlos con \-, aunque mira mejor la página de manula 'perlre'.
Tercero, yo he supuesto que ponías la fecha en formato númerico (contando
los segundos desde el 1 de enero de 1970) que se obtiene al hacer
'date +%s'. Si pones la fecha de 'date' entonces tienes luego que utilizar
las funciones que te da PERL para fechas (man perlfunc) para convertirla a
números y así poder restar diréctamente, que es lo que hago yo en el script.
Si te fijas lo que hago es muy simple, es sólo coger los pares
"conexión"/"desconexión" y acumular su diferencia en una variable que
será la que, al final, dirá cuanto tiempo has estado conectado.
>
>
> Estoy ancioso por acer funcional todo esto... todavia no puedo...
^^^
hacer ¿no?
>
> Gracias...
>
> PS: ahh y lo mas importante.. como hago funcional el script ? perl
> scritp ??
>
Dos opciones, lo haces ejecutable y pones directamente 'nombre_de_script' (la
primera línea que deberá ser "#!/usr/bin/perl" indica el interprete), o
lo haces con 'perl nombre_de_script'
Saludete y suerte
Javi
Reply to: