Retrouvez cet article dans : Linux Magazine 99
Depuis le numéro 59, les Mongueurs de Perl vous proposent tous les mois de découvrir les scripts jetables qu’ils ont pu coder ou découvrir dans leur utilisation quotidienne de Perl. Bref, des choses trop courtes pour en faire un article, mais suffisamment intéressantes pour mériter d’être publiées. Ce sont les perles de Mongueurs.
Conversion de boîte à lettres
Suite à la migration des serveurs de messagerie, il fallait convertir les boîtes à lettres du format traditionnel mbox au format maildir. Comme l’un des admins en charge de la migration cherchait un programme pour effectuer cette conversion, je lui ai écrit le petit programme Perl suivant :
#!/usr/bin/perl
use strict;
use Email::Folder;
use Email::LocalDelivery::Maildir;
my ( $mbox, $mdir ) = @ARGV;
Email::LocalDelivery::Maildir->deliver( $_, $mdir )
for Email::Folder->new($mbox)->messages;
qui s’utilise simplement en lui passant, en premier argument, le chemin vers le fichier mbox d’origine et, en second argument, le chemin vers la boîte maildir de destination.
Ce programme utilise deux modules du Perl Email Project, déjà évoqué sous cette rubrique, dont le but est la manipulation des mails de manière simple. Email::Folder permet de parcourir une boîte ; ici, on crée un objet qui ne sert qu’à fournir la liste des messages qu’on passe chacun en argument de foreach.
Au sein du foreach, on utilise Email::LocalDelivery::Maildir pour (comme son nom l’indique) délivrer chaque message fourni. Ce second module est suffisamment bien fait pour qu’on n’ait même pas besoin de créer un objet pour ça : on se contente ici d’appeler la méthode de classe deliver() avec le message courant (qui est un objet Email::Simple) et le chemin d’accès à la boîte de livraison.
« C’est tout ? », est le seul commentaire de mon collègue, qui était surpris de voir qu’un programme aussi court suffisait effectivement pour faire le travail. :-)


