• Publicidad

Ayuda con un código en Perl para POP3

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

Ayuda con un código en Perl para POP3

Notapor proxy_lainux » 2009-04-13 21:52 @953

Hola.

Estoy aprendiendo Perl, pero estaba tratando de manejar POP3 en C, y alguien me dijo que para eso es mejor Perl, y me enseñó un código. El problema es que me muestra un mensaje de error y no sé cómo arreglarlo.

Les muestro el error y les dejo el código, espero me puedan ayudar.

salu2 :D
Código: Seleccionar todo
Can't locate object method "new" via package "Term::ReadLine::Gnu" at pop3retr-1
.2.pl line 65.


http://www.cpan.org/authors/id/N/NA/NAC ... etr-1.2.pl
proxy_lainux
Perlero nuevo
Perlero nuevo
 
Mensajes: 30
Registrado: 2009-04-13 21:38 @943

Publicidad

Notapor explorer » 2009-04-14 05:48 @283

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

A mí sí que me funciona:

Código: Seleccionar todo
explorer@portatil:~/Documents/Desarrollo> ./pop3retr.pl -v
Hostname: aprosi4.aprosi.net
Username: jferrerosp
Password: ********
Opening POP3 connectionn to aprosi4.aprosi.net.
Sending USER command.
Sending PASS command.
This mailbox contains 677 messages.
Enter the message IDs you want to retrieve, followed by
a carriage return.  Press CTRL-D to finish.
677 messages in this mailbox.
1
Processed 1 messages.
Use of uninitialized value $opt_output in -c at ./pop3retr.pl line 152, <STDIN> line 1.
Retrieving #1
X-UIDL: cdc1ce431c12e268fc861de99ef8f42f.1186968423.250
From: "Joaquin Ferrero" <[email protected]>
To: "Creative@Pucela. Net" <[email protected]>
Subject: Dominios, pagos
Date: Sun, 27 May 2001 19:38:46 +0200
Message-ID: <[email protected]>
MIME-Version: 1.0
Content-Type: text/plain;
        charset="iso-8859-1"
Content-Transfer-Encoding: 8bit
X-Priority: 1 (Highest)
X-MSMail-Priority: High
X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2910.0)
X-Message-Flag: Seguimiento
X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4807.1700
Importance: High
X-OlkEid: D2E4FE26DD3A260980ACD61184FF0020AFDE19D2
Reply-By: Mon, 22 Oct 2001 20:00:00 +0200
X-Status:
X-Keywords:
X-IMAPbase: 1229889536 365910
Status: OR
X-UID: 250



Debes comprobar si tienes instalado el módulo Term::ReadLine. Ejecuta:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
perl -MTerm::ReadLine -e 1
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4

para saber si está o no. Si salen errores, es que no está instalado. O es una versión muy vieja...

¿En qué sistema operativo lo estás ejecutando? Veo que en Windows hay bastantes problemas con ese módulo.
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

Notapor proxy_lainux » 2009-04-14 16:13 @717

Hola.

Gracias por responder... pues, he intentado hacerlo en Windows y en Linux, pero en los dos tengo el mismo problema.

En linux ahorita lo intenté y vi que me funciona --version y --help, pero en lo demás siempre me aparece el mismo error.

También ya verifiqué lo del módulo y no me aparece ningún error, ¿será que me falta algo? o no estoy haciendo algo bien.

Porque ya intenté como dice en la opción de ayuda... retr.pl -h(--host) -u(--username)-p(--password)

Le intenté de las dos formas "-" y "--" y no funcionó y ejecutando solo el perl, pero tampoco... el mismo error.

¿Qué será?
proxy_lainux
Perlero nuevo
Perlero nuevo
 
Mensajes: 30
Registrado: 2009-04-13 21:38 @943

Notapor explorer » 2009-04-14 18:34 @815

Hummm... me suena a Perl viejo...

Yo creo que el programa solo está preparado para funcionar en Linux, pero no estoy seguro. Lo digo porque Gnu quiere decir UNIX, y no creo que tenga que ver con Windows.

Si me dices que también te falla en Linux, entonces no lo entiendo. A mí, con mi Linux y Perl v5.10 sí que funciona. Bueno, sale un aviso, pero no es importante.

Yo creo que si quieres seguir mirando lo del POP3, miraría otros programas y módulos. En CPAN hay unos cuantos.

Por ejemplo, en el mismo Net::POP3 hay esta pequeña demo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/local/bin/perl -w

use blib;
use Net::POP3;
use Getopt::Long;

$opt_debug = 0;
$opt_user = undef;

GetOptions(qw(debug user=s));

$pop = Net::POP3->new('backup3', Debug => $opt_debug ? 6 : 0);

$user = $opt_user || $ENV{USER} || $ENV{LOGNAME};

$count = $pop->login($user);

if($count)
 {
  $m = $pop->get(1);
  print @$m if $m;
 }

$pop->quit;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
para recuperar uno de los mensajes del servidor 'backup3'.

O este otro, popfetch, que parece que hace lo mismo que el que estás probando.
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: Ayuda con un código en Perl para POP3

Notapor creating021 » 2009-04-14 20:01 @875

proxy_lainux escribiste:Hola.

Estoy aprendiendo Perl, pero estaba tratando de manejar POP3 en C, y alguien me dijo que para eso es mejor Perl, y me enseñó un código. El problema es que me muestra un mensaje de error y no sé cómo arreglarlo.

Les muestro el error y les dejo el código, espero me puedan ayudar.

salu2 :D
Código: Seleccionar todo
Can't locate object method "new" via package "Term::ReadLine::Gnu" at pop3retr-1
.2.pl line 65.


http://www.cpan.org/authors/id/N/NA/NAC ... etr-1.2.pl


Hola.
En otro foro leí que es lo que querías hacer... y como te he dicho, con bajar el correo no es suficiente.
Para tener el fichero adjunto, necesitas procesar el contenido, pero claro, una cosa es en C y otra en Perl :lol:
este módulo te hará lo que querías hacer
Eso te quitará horas de trabajo, usando C :)
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor proxy_lainux » 2009-04-15 02:33 @148

Hola

No he podido usar ninguno... por ejemplo intenté con
Email-MIME-Attachment.

pero me sale este error:

Código: Seleccionar todo
Desktop/Email-MIME-Attachment-Stripper-1.316$ sudo perl Makefile.PL
Warning: prerequisite Email::MIME 1.861 not found.
Warning: prerequisite Email::MIME::ContentType 1.0 not found.
Warning: prerequisite Email::MIME::Modifier 1.442 not found.
Writing Makefile for Email::MIME::Attachment::Stripper


y busqué en Google que se puede hacer y encontré esto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
perl -MCPAN -e 'install "Email::MIME"'
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


pero me dice que make test no tuvo problemas, pero make install no tuve éxito... y cuando intenté con Term::ReadLine::GNU.

Código: Seleccionar todo
perl -MTerm::ReadLine::GNU -e 1
Can't locate Term/ReadLine/GNU.pm in @INC (@INC contains: /usr/local/lib/perl5/5.10.0/i686-linux /usr/local/lib/perl5/5.10.0 /usr/local/lib/perl5/site_perl/5.10.0/i686-linux /usr/local/lib/perl5/site_perl/5.10.0 .).
BEGIN failed--compilation aborted.


y si intento instalarlo me dice que no se pude usar make test ni make install

¿Será por esto que no he podido utilizar ninguno?

Por cierto, utilizo Debian squeeze.

Código: Seleccionar todo
perl -v

This is perl, v5.10.0 built for i686-linux


Espero me puedan ayudar con esto.. salu2 :D
proxy_lainux
Perlero nuevo
Perlero nuevo
 
Mensajes: 30
Registrado: 2009-04-13 21:38 @943

Notapor explorer » 2009-04-15 05:23 @266

Para instalar un módulo de Perl, debes probar esta secuencia de intentos. La primera que funcione te instalará el módulo. Va de menos complejidad para el usuario, a más:

1.- Intentar encontrar e instalar el módulo Perl desde la lista de paquetes de software de tu distribución.

Por ejemplo, si estás en Debian Linux, con apt, aptitude o cualquier otro puedes buscar por el nombre del paquete. En mi Debian, se llama libterm-readline-gnu-perl. Lo seleccionas y lo instalas. O lo instalas con
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
apt-get install libterm-readline-gnu-perl
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
. Para Ubuntu, también puedes usar estas herramientas, o desde el entorno gráfico, con synaptic. Para Red Hat y Fedora, está yum. Para SuSE y OpenSuSE, están zypper y yast2... cada distribución tiene su método, aunque eso cambiará dentro de poco, cuando lo unifiquen.

Si, por el contrario, estás en un Windows, usa PPM (en caso de usar la distribución de ActiveState).

La idea es que SIEMPRE, antes de intentar instalar un paquete, distribución o módulo de Perl, de forma manual, veamos si lo tenemos ya en forma de paquete software instalable para nuestro sistema operativo.

2.- Usa el comando cpan o cpanp desde la línea de comandos:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
cpan Term::ReadLine::Gnu
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
o, mejor,
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
cpanp install Term::ReadLine::Gnu
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
.

Este comando deberás ejecutarlo siendo root del sistema. La primera vez que lo ejecutes te preguntará una serie de configuraciones. Este es el método más cómodo para instalar, porque se encargará de bajar dependencias, descomprimir, comprobar, compilar, volver a comprobar, e instalar todos los ficheros necesarios.

3.- Usa el método que comentas: descargar, compilar, comprobar, instalar:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
perl Makefile.PL
make
make test
make install
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Este último método es la última opción que debemos intentar. En los sistemas Windows, no será apenas necesario, por la presencia de PPM, pero sí quizás en otras distribuciones Perl para Windows, como Strawberry Perl. En los Linux, lo dicho: primero busca el paquete en el sistema operativo, y si no está, usa el comando cpan (aunque mejor y más moderno es cpanp (CPANPLUS)).


Te has equivocado con
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
perl -MTerm::ReadLine::GNU -e 1
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Es "Gnu", no "GNU".
Última edición por explorer el 2009-05-27 13:43 @613, editado 2 veces en total
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

Notapor proxy_lainux » 2009-04-15 11:07 @505

Hola.

Gracias por la respuestas... sí, era eso, ya lo instalé y ya pude hacer funcionar el primer code que coloqué, el de attachment no creo poder hacerlo funcionar, ya que la versión que tengo es más actualizada.

Y me aparecen estos errores y ya me fijé y tengo instalados esos módulos:

Código: Seleccionar todo
Warning: prerequisite Email::MIME 1.861 not found.
Warning: prerequisite Email::MIME::ContentType 1.0 not found.
Warning: prerequisite Email::MIME::Modifier 1.442 not found.
Writing Makefile for Email::MIME::Attachment::Stripper



Código: Seleccionar todo
./Makefile.PL: line 1: use: command not found
./Makefile.PL: line 2: use: command not found
./Makefile.PL: line 4: syntax error near unexpected token `newline'
./Makefile.PL: line 4: `WriteMakefile('



Pues, bueno, como ya vi cómo funciona el primer código, creo que ahora es tiempo de estudiarlo, y aprender hacer el mío...

Gracias, salu2
proxy_lainux
Perlero nuevo
Perlero nuevo
 
Mensajes: 30
Registrado: 2009-04-13 21:38 @943

Notapor explorer » 2009-04-15 18:06 @796

Repito: es mucho más cómodo instalar los módulos siguiendo el orden que te he indicado. En las distribuciones Debian suelen tener disponibles una gran cantidad de módulos Perl en forma de paquete instalable.

Te ahorrarás mucho tiempo y problemas.
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

Notapor creating021 » 2009-04-15 18:41 @820

proxy_lainux escribiste:el de attachment no creo poder hacerlo funcionar, ya que la versión que tengo es más actualizada.

Email-MIME-Attachment-Stripper-1.316 es de este año... y si ya lo tienes instalado (que lo dudo) no veo el problema.
proxy_lainux escribiste:pero me dice que make test no tuvo problemas, pero make install no tuve éxito...

Eso es porque (probablemente) no tienes permisos para instalar la librería, debes ejecutar lo intentado como root.

PD: Mira bien los pasos que te pone explorer.
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Siguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 8 invitados

cron