• Publicidad

Inserción de carácter '\'

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

Inserción de carácter '\'

Notapor primitivo » 2013-03-23 21:58 @957

Buenas, Yo molestando de nuevo ;)

Resulta que estoy usando correos electrónicos con Perl, pero no me funciona si no le agrego la '\' antes de la '@' :(

Por ejemplo, se supone que el correo es [email protected]. El código me lo envía, siempre y cuando lo escriba así:

pepito\@mismtp.com

El punto es que no hallo cómo incluirle la '\' al correo justo antes de la '@'. A continuación ilustro un poco más el código para mejor comprensión.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $to = "[email protected]"; #Correo de ejemplo, sin '\' la cual debo incluir y dejar el correo como pepito\@perez.com
  2. my $Senddir = "usr/sbin/sendmail"; #Ruta de sendmail; en UNIX (Trabajo bajo una VPS ;))
  3.               open(MAIL,"|$Senddir $to") or print $socket "$se P $us :ERROR Interno, Por favor intente más tarde.\n";
  4.               print MAIL "From: primitivo\@micorreo.org\n"; #acá si lo puedo agregar directamente...
  5.               print MAIL "Subject: EMaiL\n";
  6.               print MAIL "\n";
  7.               print MAIL "\n";
  8.               print MAIL "EMaiL - Gestión de correos masivos de la RED";
  9.               print MAIL "*** (Mensaje automático) ***\n";
  10.               print MAIL "\n";
  11.               print MAIL "--------------------------------\n";
  12.               print MAIL "$body\n"; #Este es el cuerpo del mensaje, que ya he guardado para enviar.
  13.               print MAIL "--------------------------------\n";
  14.               print MAIL "\n";
  15.               print MAIL "Mensaje automático, para reportar abuso ó spamming, Por favor contáctenos a través de nuestro portal web http://www.miweb.org\n";
  16.               close(MAIL);
  17.               print $socket "$se P $us :Mensaje enviado éxitosamente.\n";
  18.  
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
primitivo
Perlero nuevo
Perlero nuevo
 
Mensajes: 80
Registrado: 2013-03-22 23:05 @004

Publicidad

Re: Inserción de carácter '\'

Notapor explorer » 2013-03-24 10:10 @465

El problema es que estás usando comillas dobles.

Perl utiliza las comillas dobles para hacer una "interpolación" de las variables que haya dentro. Y claro, cuando se encuentra con una '@', se piensa que está delante de un array.

Prueba a usar comillas simples:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $to = '[email protected]';
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


O usar el operador de entrecomillado simple:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $to = q(pepito@perez.com);
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: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Inserción de carácter '\'

Notapor primitivo » 2013-03-24 11:28 @520

¡Gracias, explorer!

Lo he conseguido con las comillas simples, de la siguiente forma:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!usr/bin/perl
  2. $to = '[email protected]'; #Corrijo por comillas " '' "
  3. $too = $to; #Reasigno las variable $to -> $too por si acaso xD.
  4. $ruta = "/usr/sbin/sendmail"; #El patch en UNIX
  5. @correo_tmp = split("\@",$too); #Divido la cadena que guardé en $too, y la asigno a un array.
  6. print "-> $correo_tmp[0] :: $correo_tmp[1]\n"; #Imprimo valores para asegurarme de lo que estoy guardando.
  7. $car = "/\\/@"; #Declaro un 'scalar' Para agregar objeto '\'
  8. $ca = $car . $correo_tmp[1]; #Concateno :D
  9. $ca =~ s/\///g; #Elimino los objetos '/' las veces que se encuentre 'g' que no me interesa tener
  10. $smtp = $correo_tmp[0] . $ca; #Declaro 'scalar' final y concateno
  11. print "$smtp\n"; #Y ¡Tengo la cadena! :D
  12. open(CORREO,"|$ruta $smtp") || print "ERROR\n";
  13. print CORREO "From: pepito\@perez.com\n";
  14. print CORREO "Subject: Correo automático.\n";
  15. print CORREO "\n";
  16. print CORREO "$body\n";
  17. close(CORREO);
  18.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
primitivo
Perlero nuevo
Perlero nuevo
 
Mensajes: 80
Registrado: 2013-03-22 23:05 @004

Re: Inserción de carácter '\'

Notapor explorer » 2013-03-24 12:07 @546

Pero... si no necesitas hacer NADA de eso...

Una vez que has metido la dirección de correo en una variable, con las comillas simples, no necesitas poner ningún '\'...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Inserción de carácter '\'

Notapor primitivo » 2013-03-25 12:44 @572

Lo sé, pero ¿cómo hago yo, ya que sin la '\' no me envía el correo? :S
primitivo
Perlero nuevo
Perlero nuevo
 
Mensajes: 80
Registrado: 2013-03-22 23:05 @004

Re: Inserción de carácter '\'

Notapor explorer » 2013-03-25 12:50 @576

¿Esto no te funciona?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!usr/bin/perl
  2.  
  3. $ruta = "/usr/sbin/sendmail";
  4.  
  5. open (CORREO, "|$ruta $to") or die "ERROR: $!\n";
  6. print CORREO "From: pepito\@perez.com\n";
  7. print CORREO "Subject: Correo automático.\n";
  8. print CORREO "\n";
  9. print CORREO "$body\n";
  10. close(CORREO);
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: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Inserción de carácter '\'

Notapor primitivo » 2013-03-25 13:02 @585

No, maestro, Yo me asombré cuando no me lo envió.
primitivo
Perlero nuevo
Perlero nuevo
 
Mensajes: 80
Registrado: 2013-03-22 23:05 @004

Re: Inserción de carácter '\'

Notapor explorer » 2013-03-25 15:32 @689

Pues no lo entiendo, porque a mi sí que me funciona.

No tengo sendmail, pero sí el comando mail:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use feature 'say';
  3. use autodie;
  4.  
  5. $ruta = "/usr/bin/mail";
  6. $to   = '[email protected]';
  7. $body = 'Esto es una prueba';
  8.  
  9. open my $CORREO, qq(|$ruta -s "Correo automatico" -a "From: $from" $to);
  10. say     $CORREO $body;
  11. close   $CORREO;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Quizás se nos pasa algún detalle que no nos has contado.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
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: No hay usuarios registrados visitando el Foro y 30 invitados