• Publicidad

Consulta por expresión regular

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

Consulta por expresión regular

Notapor seguridadenmimail » 2011-11-19 19:06 @837

En esta ocasión los molesto porque quiero hacer una regex y no estoy teniendo éxito.
Tengo el siguiente script:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. if ( @ARGV != 1 ) {
  2.  
  3.     die "\nUse: $0 <urls.txt>\n\n" . "   <file>    Archivo que contiene las urls [ej -> urls.txt]\n";
  4.  
  5. }
  6. $file = $ARGV[0];
  7. chomp $archivo;
  8.  
  9. open $FILE, '<', $file or die $!;
  10. @archivos = <$FILE>;
  11. close $FILE;
  12.  
  13. for $archivo (@archivos) {
  14.     chomp $archivo;
  15.     if ( $archivo =~ s/:|\//_/g ) {
  16.         print "$archivo\n";
  17.         system("archivo.exe --direccion=$archivo --salida=$archivo");
  18.     }
  19. }
  20.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Mi intención es que éste tome un archivo externo con el siguiente contenido:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
http://www.google.com
http://www.miweb.com/testing/
http://web2.com/testing/test/archive
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Y lo convierta de la siguiente forma:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
http_www.google.com
http_www.miweb.com_testing
http_web2.com_testing_test_archive
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


¿Alguien me puede ayudar? La regex que tengo convierte el "://" a "_" pero las demás barras no las toca.

Por otro lado ahora, que me doy cuenta, en realidad necesito dos acciones:
1.- Conservar en un array las URL del archivo
2.- Convertir con la regex y guardar el resultado en otro array

Necesito esto porque tengo dos argumentos en mi archivo.exe, uno para las URL y otro para las salidas.

Espero que se entienda.
Saludos.
Última edición por explorer el 2011-11-19 19:42 @863, editado 1 vez en total
Razón: Formateado de código con Perltidy
seguridadenmimail
Perlero nuevo
Perlero nuevo
 
Mensajes: 69
Registrado: 2011-08-30 19:28 @853

Publicidad

Re: Consulta por expresión regular

Notapor explorer » 2011-11-19 19:47 @866

Sería algo así (no probado):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my @array_original = @archivos;   # sacamos una copia
  2. for $archivo (@archivos) {
  3.     chomp $archivo;
  4.     $archivo =~ s{://|/}{_}g;     # el elemento del array es modificado también
  5.     print "[$archivo]\n";
  6.     system("archivo.exe --direccion=$archivo --salida=$archivo");
  7. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
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: Consulta por expresión regular

Notapor seguridadenmimail » 2011-11-19 23:06 @004

Aquí no puedo probarlo, pero te hago una consulta ¿$archivo no queda modificado? Digamos:
Sintáxis: [ Descargar ] [ Ocultar ]
  1. http_www.google.com 
  2. http_www.miweb.com_testing 
  3. http_web2.com_testing_test_archive 


porque yo necesito para "--url" las URL originales y para "--out" las modificadas.

Saludos.
seguridadenmimail
Perlero nuevo
Perlero nuevo
 
Mensajes: 69
Registrado: 2011-08-30 19:28 @853

Re: Consulta por expresión regular

Notapor explorer » 2011-11-20 00:45 @073

Tienes razón, funcionaría mal.

Mejor así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my @array_original;                   # donde guardamos una copia
  2. for $archivo (@archivos) {
  3.     chomp $archivo;
  4.     my $original = $archivo;
  5.     push @array_original, $original;  # guardamos el original
  6.     $archivo =~ s{://|/}{_}g;         # Cambio. El elemento del array es modificado también
  7.     print "[$original] => [$archivo]\n";
  8.     system("archivo.exe --direccion=$original --salida=$archivo");
  9. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
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: Consulta por expresión regular

Notapor seguridadenmimail » 2011-11-20 20:28 @894

Muchas Gracias.
Saludos.
seguridadenmimail
Perlero nuevo
Perlero nuevo
 
Mensajes: 69
Registrado: 2011-08-30 19:28 @853


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado