Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

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

9 views
Skip to first unread message

Eric BERTHOMIER

unread,
Sep 26, 2012, 4:49:51 AM9/26/12
to
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\n";
my $get = pop->get(1, FH) if $pop->login('lettre_mensuelle', 'secret') > 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\/plain/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 tentatives, je n'ai hélas pas réussi à trouver une solution fonctionnelle.

Merci d'avance de votre aide

Eric

Eric BERTHOMIER

unread,
Sep 26, 2012, 10:37:55 AM9/26/12
to
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;

Eric BERTHOMIER

unread,
Sep 26, 2012, 11:19:39 AM9/26/12
to
Voici une solution qui ne me convient pas complètement mais qui semble fonctionner :

my $fh = new_tmpfile IO::File;

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