Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Intermedio » Problemas para extraer datos entre cadenas  RESUELTO Responder al tema
Nuevo tema


Página 1 de 1  [ 3 mensajes ] 
 
Nota 2011-05-28 04:20 @222

Perlero Nuevo
Registrado: 2011-05-28 03:48 @200
Mensajes: 6
Problemas para extraer datos entre cadenas
¡Buenas a todos!

Hace poco encontré el libro de Larry Wall ¡y no puedo dejar Perl!

Actualmente estoy aplicando este lenguaje en todo lo que puedo.

... Y lamentablemente me terminé bloqueando en algo.

La situación:
Estoy intentando realizar un script que lo que hace es barrer un archivo HTML donde figuran todos los usuarios que se loguearon a una aplicación, entre otros datos, y extraer todos los nombres de estos.

La parte del archivo donde saco datos:
Syntax: [ Download ] [ Hide ]
Using html4strict Syntax Highlighting
  1. ...title="Ver perfil de perezjuan1">perezjuan1</a></td>.
.


El script (la función que maneja esto):

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. $inputfile=$ARGV[0];
  2.  
  3. sub perfil() {
  4.     open( INPUTFILE, $inputfile ) || die "No existe el archivo " . $inputfile;
  5.     while (<INPUTFILE>) {
  6.         while (/perfil de (.*)">/g) {
  7.             print "$&\n";
  8.         }
  9.     }
  10.     close INPUTFILE;
  11.  
  12.     exit(0);
  13. }
  14.  


El problema:
Sucede que la salida que veo es la siguiente:
Syntax: [ Download ] [ Hide ]
Using text Syntax Highlighting
.
perfil de perezjuan1">
.


La idea es que la salida (en consola) sea:
Syntax: [ Download ] [ Hide ]
Using text Syntax Highlighting
perezjuan1
rodriguezramon2
etc...


Entiendo por qué está mal, pero no logro encontrar una solución, ya que no veo cómo extraer los datos (nombres de usuarios) definiendolo entre "cadenas" (por ejemplo: imprimir los datos que se encuentran entre "title="Ver perfil de">" y "</a></td>").

Si alguien me pudiera ayudar a solucionar, esto lo agradecería, ya que no estoy extrayendo los datos limpios y no me sirve

¡¡¡Gracias!!!


Nota 2011-05-28 05:34 @274
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10271
Re: Problemas para extraer datos entre cadenas  RESUELTO
Bienvenido a los foros de Perl, poeaod.

La variable espeecial $& contiene todo lo que haya sido encontrado en la última expresión regular. Eso incluye todo el texto que acompaña a los paréntesis de captura.

Debes cambiar $& por $1, ya que es esta última variable la que contiene lo que se ha capturado por la primera pareja de paréntesis de la exp. reg.

Y... por si acaso... también cambiaría .* por .*? .

_________________
JF^D Perl programming


Nota 2011-05-28 23:22 @015

Perlero Nuevo
Registrado: 2011-05-28 03:48 @200
Mensajes: 6
Re: Problemas para extraer datos entre cadenas
¡¡¡¡Gracias, explorer!!!! Doy el tema por SOLUCIONADO.
La respuesta fue impecable, gracias. Estoy en deuda.


Responder al tema  [ 3 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO