elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [PERL] Aporte y consulta xD
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [PERL] Aporte y consulta xD  (Leído 2,140 veces)
[u]nsigned


Desconectado Desconectado

Mensajes: 2.397

JS/Node developer


Ver Perfil WWW
[PERL] Aporte y consulta xD
« en: 25 Julio 2010, 23:55 pm »

Código
  1. #!/usr/bin/perl
  2. # Scrip en PERL que lista todos los mails encontrados en un ficheo plano de texto
  3. # Esta limitado a listar solo los mails con formato user@host.xxx
  4. #
  5. #Declaracion de funcion inicializadora, compurbo que seespecificaron bien loas argumento o muestro la ayuda llamando a 'show_help()'
  6. sub init(){
  7. if(($#ARGV+1)!=1){&show_help}
  8. else{
  9. if($ARGV[0] eq '--help'){&show_help}
  10. else{
  11. $fichero=$ARGV[0];
  12. #LLamo a la funcion que lee y porcesa la informacion
  13. &extraer_mails;
  14. }
  15. }
  16.  
  17. }
  18. #Declaracion de funcion que informa uso
  19. sub show_help(){
  20. print "lsmails.pl\nVersion 0.1 bajo Licencia GPL\n\n";
  21. print "Modo de empleo: lsmails --help | FICHERO\n";
  22. print "Devuelve todos los mails en FICHERO con formato user\@host.xxx\n\nOPCIONES:\n";
  23. print "\t--help:\t\tmuestra la ayudadel script.\n";
  24. print "\tFICHERO:\tdebe ser un archivo plano de texto\n\n";
  25. print "Ejemplo de uso:\tlsmails miarchivo.txt\n\n";
  26. print "Autor: [u]nsigned - facku.mail\@gmail.com\n";
  27. }
  28. #Declaracion de funcion que lee y procesa el archivo de entrada
  29. sub extraer_mails(){
  30. #Abro elarchivo
  31. open(AR,$fichero)||die"$!\n";
  32. while(<AR>){
  33. @palabras=split(" ",$_);
  34. foreach $palabra(@palabras){
  35. if($palabra=~/\w+@\w+\.\w*[^\.]$/){
  36. print "$palabra\n";
  37. }
  38. }
  39. }
  40. }
  41.  
  42. &init;
  43.  

Este script es simple, busca todas las direcciones de emial en un archivo pasado como parametro.

Mi duda es que con laexpresion regular solo eh conseguido que detecte los emails con formato user@host.xxx  y no eh conseguido que tambien me devuelva los mails con formato user@host.xxx.yy

Como deberia quedar la expresion regular?

Saludos.

PD: Soy novato en PERL&expresiones regulares, y se me ocurrio hacer este script para practicar lo que estoyaprendiendo  ;D


En línea

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [PERL] Aporte y consulta xD
« Respuesta #1 en: 26 Julio 2010, 13:33 pm »

Las expresiones regulares pueden variar bastante dependiendo del texto que se le este pasando como parámetro, y si googleas seguro encuentras muchas formas de hacerlo, pero como veo que lo que revisas son palabras separadas por espacios, esta sería otra forma :P

Código
  1. $text = "mail1\@mail.com palabra6 palabra9 palabra2 palabra11 mail3\@mail.com.uy palabra1 mail2\@mail.com palabra4 palabra5 palabra7 palabra3 palabra8 mial4\@mail.com.ar palabra10";
  2. @p = split(" ",$text);
  3. foreach $palabra(@p)
  4. {
  5. if($palabra=~/\w+@\w+\.\w+/)
  6. {
  7. print "$palabra\n";
  8. }
  9. }

Código:
mail1@mail.com
mail3@mail.com.uy
mail2@mail.com
mial4@mail.com.ar

Saludos


En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: [PERL] Aporte y consulta xD
« Respuesta #2 en: 26 Julio 2010, 17:00 pm »

Las expresiones regulares pueden variar bastante dependiendo del texto que se le este pasando como parámetro
Muy cierto xD.

Código
  1. #!/usr/bin/perl
  2.  
  3. $text = 'mAil-1@mail.com palabra6 palabra9 palabra2 palabra11 mail3@mail.com.uy palabra1 ma_il2@mail.com palabra4 palabra5 palabra7 palabra3 palabra8 mial4@mail.com.ar';
  4. while($text =~ m/([\w\-]*?@\w+\.\w+\.?\w+)\s?/g){
  5. print $1, "\n";
  6. }

Salida:
Código:
yoya@yoya-desktop:~/Escritorio$ perl e.pl
mAil-1@mail.com
mail3@mail.com.uy
ma_il2@mail.com
mial4@mail.com.ar

« Última modificación: 26 Julio 2010, 18:23 pm por ~ Yoya ~ » En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines