• Publicidad

Extraer tiempo de retraso desde ping

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Extraer tiempo de retraso desde ping

Notapor Javier_sz12 » 2010-07-09 11:56 @539

Buenas... tengo un problema que no logro resolver. Tengo el siguiente texto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
PING http://www.l.google.com (72.14.253.105): 56 data bytes

64 bytes from 72.14.253.104: icmp_seq=3 ttl=52 time=109.575 ms
64 bytes from 72.14.253.104: icmp_seq=4 ttl=52 time=113.299 ms
64 bytes from 72.14.253.104: icmp_seq=5 ttl=53 time=104.000 ms
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


que proviene de la ejecución del ping, pero necesito obtener algo de tipo

@arreglo= ("109.575","113.299","104.000");

¿Cómo se puede hacer?
Gracias por su tiempo.
Javier_sz12
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2010-07-09 11:46 @532

Publicidad

Re: Problema con expresiones regulares

Notapor explorer » 2010-07-09 14:48 @658

Bienvenido a los foros de Perl en Español, Javier_sz12.

Dices que tienes problemas con las expresiones regulares... ¿puedes publicar tus intentos?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problema con expresiones regulares

Notapor Javier_sz12 » 2010-07-09 16:27 @727

Hola. Sí, traté de la siguiente manera para sacar el primero de los números:

/^.*\s*=.*=.*=(.*)ms/
Javier_sz12
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2010-07-09 11:46 @532

Re: Problema con expresiones regulares

Notapor explorer » 2010-07-09 18:08 @797

Demasiado complicado. ;)

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use 5.010;
  3. use strict;
  4. use warnings;
  5. use diagnostics;
  6.  
  7.  
  8. my $ping = q(
  9. PING http://www.l.google.com (72.14.253.105): 56 data bytes
  10.  
  11. 64 bytes from 72.14.253.104: icmp_seq=3 ttl=52 time=109.575 ms
  12. 64 bytes from 72.14.253.104: icmp_seq=4 ttl=52 time=113.299 ms
  13. 64 bytes from 72.14.253.104: icmp_seq=5 ttl=53 time=104.000 ms
  14. );
  15.  
  16. my @arreglo;
  17.  
  18. for my $linea ( split /\n/, $ping ) {
  19.  
  20.     if ($linea ~~ /([\d.]+) ms/) {
  21.         push @arreglo, $1;
  22.     }
  23. }
  24.  
  25. use Data::Dumper::Names;
  26. print Dumper \@arreglo;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
@arreglo = (
             '109.575',
             '113.299',
             '104.000'
           );
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

El truco está en indicar dónde está lo que queremos capturar: el número ([\d.]+) que está al lado de " ms".
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 2 invitados

cron