MIME::Parser - Bareword "FH" not allowed while "strict subs"

Le
Eric BERTHOMIER
Bonjour à tous,

je tente de mettre en place ce script extrait de l'article des mongueurs de=
Perl :

http://articles.mongueurs.net/magazines/linuxmag61.html

#!/usr/bin/perl -w
use strict;
use Net::POP3;
use Net::SMTP;
use MIME::Parser;
use MIME::Entity;
use MIME::Lite;
use POSIX 'strftime';

my $pop = Net::POP3->new('pop.monfai.com')
or die "ne peut me connecter au serveur POP pop.monfai.com";
my $get = pop->get(1, FH) if $pop->login('lettre_mensuelle', 'secret'=
) > 0;

die "le message n'est pas encore arrivé" unless $get;

$pop->delete(1) if $get;
$pop->quit();

my $parser = MIME::Parser->new();
my $entity = $parser->parse(*FH);

my($body,$image_encoded);

for($entity->parts()) {
my $corps = $_->body();
my $head = $_->head()->as_string;

$body = join '', @$corps if $head =~ /content-type: text/plain=
/is;
$image_encoded = join '', @$corps if $head =~ /content-type: im=
age//is;
}

Hélas je me retrouve bloqué avec le message d'erreur suivant :

Bareword "FH" not allowed while "strict subs" in use at bug.pl line 12.

J'ai donc tenté de passer avec un my $fh mais malgré plusieurs tentativ=
es, je n'ai hélas pas réussi à trouver une solution fonctionnelle.

Merci d'avance de votre aide

Eric
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Eric BERTHOMIER
Le #24815572
Je complète ma question par une petite avancée, à la lecture de la de scription de MIME::Parser, il serait possible d'utiliser

use FileHandle;

my $fh = FileHandle->new;

Le mercredi 26 septembre 2012 10:49:51 UTC+2, Eric BERTHOMIER a écrit :
Bonjour à tous,



je tente de mettre en place ce script extrait de l'article des mongueurs de Perl :



http://articles.mongueurs.net/magazines/linuxmag61.html



#!/usr/bin/perl -w

use strict;

use Net::POP3;

use Net::SMTP;

use MIME::Parser;

use MIME::Entity;

use MIME::Lite;

use POSIX 'strftime';



my $pop = Net::POP3->new('pop.monfai.com')

or die "ne peut me connecter au serveur POP pop.monfai.comn";

my $get = pop->get(1, FH) if $pop->login('lettre_mensuelle', 'secre t') > 0;



die "le message n'est pas encore arrivén" unless $get;



$pop->delete(1) if $get;

$pop->quit();



my $parser = MIME::Parser->new();

my $entity = $parser->parse(*FH);



my($body,$image_encoded);



for($entity->parts()) {

my $corps = $_->body();

my $head = $_->head()->as_string;



$body = join '', @$corps if $head =~ /content-type: text/pla in/is;

$image_encoded = join '', @$corps if $head =~ /content-type: image//is;

}



Hélas je me retrouve bloqué avec le message d'erreur suivant :



Bareword "FH" not allowed while "strict subs" in use at bug.pl line 12.



J'ai donc tenté de passer avec un my $fh mais malgré plusieurs tentat ives, je n'ai hélas pas réussi à trouver une solution fonctionnelle.



Merci d'avance de votre aide



Eric
Eric BERTHOMIER
Le #24815692
Voici une solution qui ne me convient pas complètement mais qui semble fo nctionner :

my $fh = new_tmpfile IO::File;

my $ref_courriel = $pop->get($msg, $fh);
my $parser = MIME::Parser->new();
my $entity = $parser->parse($fh);


Le mercredi 26 septembre 2012 16:37:56 UTC+2, Eric BERTHOMIER a écrit :
Je complète ma question par une petite avancée, à la lecture de la description de MIME::Parser, il serait possible d'utiliser



use FileHandle;



my $fh = FileHandle->new;



Le mercredi 26 septembre 2012 10:49:51 UTC+2, Eric BERTHOMIER a écrit  :

> Bonjour à tous,

>

>

>

> je tente de mettre en place ce script extrait de l'article des mongueur s de Perl :

>

>

>

> http://articles.mongueurs.net/magazines/linuxmag61.html

>

>

>

> #!/usr/bin/perl -w

>

> use strict;

>

> use Net::POP3;

>

> use Net::SMTP;

>

> use MIME::Parser;

>

> use MIME::Entity;

>

> use MIME::Lite;

>

> use POSIX 'strftime';

>

>

>

> my $pop = Net::POP3->new('pop.monfai.com')

>

> or die "ne peut me connecter au serveur POP pop.monfai.comn";

>

> my $get = pop->get(1, FH) if $pop->login('lettre_mensuelle', 'sec ret') > 0;

>

>

>

> die "le message n'est pas encore arrivén" unless $get;

>

>

>

> $pop->delete(1) if $get;

>

> $pop->quit();

>

>

>

> my $parser = MIME::Parser->new();

>

> my $entity = $parser->parse(*FH);

>

>

>

> my($body,$image_encoded);

>

>

>

> for($entity->parts()) {

>

> my $corps = $_->body();

>

> my $head = $_->head()->as_string;

>

>

>

> $body = join '', @$corps if $head =~ /content-type: text/p lain/is;

>

> $image_encoded = join '', @$corps if $head =~ /content-type : image//is;

>

> }

>

>

>

> Hélas je me retrouve bloqué avec le message d'erreur suivant :

>

>

>

> Bareword "FH" not allowed while "strict subs" in use at bug.pl line 12.

>

>

>

> J'ai donc tenté de passer avec un my $fh mais malgré plusieurs tent atives, je n'ai hélas pas réussi à trouver une solution fonctionnelle .

>

>

>

> Merci d'avance de votre aide

>

>

>

> Eric
Publicité
Poster une réponse
Anonyme