Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

2 réponses
Avatar
Eric BERTHOMIER
Bonjour =E0 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 =3D Net::POP3->new('pop.monfai.com')
or die "ne peut me connecter au serveur POP pop.monfai.com\n";
my $get =3D pop->get(1, FH) if $pop->login('lettre_mensuelle', 'secret'=
) > 0;

die "le message n'est pas encore arriv=E9\n" unless $get;

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

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

my($body,$image_encoded);

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

$body =3D join '', @$corps if $head =3D~ /content-type: text\/plain=
/is;
$image_encoded =3D join '', @$corps if $head =3D~ /content-type: im=
age\//is;
}
=20
H=E9las je me retrouve bloqu=E9 avec le message d'erreur suivant :

Bareword "FH" not allowed while "strict subs" in use at bug.pl line 12.
=09
J'ai donc tent=E9 de passer avec un my $fh mais malgr=E9 plusieurs tentativ=
es, je n'ai h=E9las pas r=E9ussi =E0 trouver une solution fonctionnelle.
=09
Merci d'avance de votre aide

Eric

2 réponses

Avatar
Eric BERTHOMIER
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
Avatar
Eric BERTHOMIER
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