Página 1 de 3

Ayuda con un código en Perl para POP3

NotaPublicado: 2009-04-13 21:52 @953
por proxy_lainux
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

NotaPublicado: 2009-04-14 05:48 @283
por explorer
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.

NotaPublicado: 2009-04-14 16:13 @717
por proxy_lainux
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á?

NotaPublicado: 2009-04-14 18:34 @815
por explorer
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.

Re: Ayuda con un código en Perl para POP3

NotaPublicado: 2009-04-14 20:01 @875
por creating021
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 :)

NotaPublicado: 2009-04-15 02:33 @148
por proxy_lainux
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.001 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

NotaPublicado: 2009-04-15 05:23 @266
por explorer
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.001 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".

NotaPublicado: 2009-04-15 11:07 @505
por proxy_lainux
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

NotaPublicado: 2009-04-15 18:06 @796
por explorer
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.

NotaPublicado: 2009-04-15 18:41 @820
por creating021
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.