Article publié dans Linux Magazine 62, juin 2004.
Ce script sera probablement autant utile à un administrateur système qu'à un utilisateur. Il permet de tester rapidement si un compte POP fonctionne et accessoirement indique le nombre de messages non lus.
#!/usr/bin/perl use Net::POP3; print STDERR "usage: pop3check server login [password]\n" and exit unless @ARGV; $| = 1; my ($server,$login,$passwd) = @ARGV; print "Password: " and chomp($passwd = <STDIN>) unless defined $passwd; print "connecting to $server.. "; my $pop = Net::POP3->new($server); print STDERR "can't connect to server\n" and exit unless defined $pop; print "ok\n"; $pop->login($login, $passwd); print STDERR "error: wrong username or password\n" and exit unless $pop->ok; my ($undeleted, $size) = $pop->popstat; my $last = $pop->last; print "mail box size: $size\n", "$undeleted unread mail(s).\n", "last read mail was number $last\n\n";
Il attend en argument le nom du serveur POP, l'identifiant et le mot de passe. Si ce dernier n'est pas donné sur la ligne de commande, il est demandé interactivement. Mais en clair ! À ne pas exécuter donc devant n'importe qui, ni en cas d'avis de tempête.
(Sébastien Aperghis-Tramoni (Maddingue), Marseille.pm - sebastien@aperghis.net
)
Il y a peu de temps, un collègue spécialisé dans le réseau et les télécoms
s'est tourné vers moi car il voulait savoir si je pouvais lui générer
la liste de toutes les adresses IP d'un réseau subneté. Le module
NetAddr::IP
m'a permit de briller en cette occasion avec le bout de
code suivant :
#!/usr/bin/perl use NetAddr::IP; print STDERR "usage: subnets network/mask bits\n" and exit unless @ARGV; my($network,$bits) = @ARGV; my $mask = (split '/', $network)[1]; print STDERR "bits undefined or smaller than mask\n" and exit unless $bits >= $mask; for my $net ( NetAddr::IP->new($network)->split($bits) ) { print join(" ", map { $net+$_ } 0..(1<<(32-$bits))-1 ), $/ }
Ce script prend comme argument l'adresse de réseau de base en format CIDR et le nombre de bits de masque des sous-réseaux demandés. Le format de sortie est très simple : chaque ligne correspond à un sous-réseau, les adresses étant séparées par des espaces. La première est donc l'adresse de réseau et la dernière l'adresse de diffusion.
(Maddingue)
On peut quelquefois se trouver confronté à des fichiers encodés
suivant les cas, soit au format UUencode, soit en Base64. Or, sur bien
des Unix, il n'y a pas de commande permettant de décoder le Base64,
et l'utilitaire uudecode(1)
est souvent très tatillon sur le format
et décode mal le fichier.
En Perl, des unilignes sont suffisants pour décoder ces deux formats.
Ainsi, pour le Base64, on utilise le module MIME::Base64
:
$ perl -MMIME::Base64 -ne 'print decode_base64($_)' fichier.mime
Et pour décoder de l'UUencode, la fonction unpack()
est très efficace :
$ perl -ne 'print unpack"u*",$_' fichier.uu
Inversement, pour encoder en Base64, il suffit d'utiliser la fonction
encode_base64()
de MIME::Base64
.
$ perl -0777 -MMIME::Base64 -ne 'print encode_base64($_)' < fichier > fichier.mime
L'encodage en UUencode étant par contre assez spécial, il est préférable
d'utiliser le module Convert::UU
:
$ perl -MConvert::UU=uuencode -e 'print uuencode(*STDIN)' < fichier > fichier.uu
Et il faut par ailleurs savoir que si le but est d'inclure un fichier
dans un mail, des modules comme MIME::Lite
se chargent très bien de ces
basses besognes.
(Maddingue)
bleadperl est le petit nom donné à la toute dernière version de développement de Perl. Si vous trouvez un bug dans Perl et que vous voulez proposer un patch, il est fortement conseillé de le produire à partir de bleadperl.
Pour récupérer cette version, le plus simple est d'utiliser rsync :
$ rsync -avz rsync://ftp.linux.activestate.com/perl-current/ current
Vous récupérerez les sources à jour dans le répertoire current.
Pourquoi les sources ne sont-ils pas disponibles par l'intermédiaire de CVS ? Tout simplement parce que les sources de Perl sont gérés depuis début 1997 par un outil professionnel appelé Perforce (P4 en abrégé). C'est la société ActiveState, qui maintient une version de Perl pour Windows, qui héberge le serveur Perforce.
Si à l'origine seul le pumpking avait les droits en écriture pour appliquer un patch sur les sources de Perl, ce n'est plus vrai aujourd'hui. Le pumpking s'occupe des patchs importants et refuse les patchs incomplets ou non adaptés -- mais d'autres peuvent appliquer des patchs (surtout des corrections de bugs ou des corrections de documentation).
(Philippe "BooK" Bruhat, Paris.pm - book@mongueurs.net
-
Merci à Rafaël Garcia-Suarez pour les précisions qu'il m'a apportées.)
Le sport qu'on appelle golf consiste à mettre une petite balle dans un trou en un nombre minimum de coups (strokes en anglais).
Le golf Perl (ou Perl golf en anglais) consiste à écrire un programme Perl qui résout un problème donné en un minimum de frappes de touches (keystrokes en anglais).
La mode du golf a été relancée dans The Perl Review et de février à
novembre 2002, une dizaine de compétitions mensuelles ont eu lieu.
Très rapidement, les discussions consacrées au golf ont surchargé
la liste Fun with Perl (fwp@perl.org
) et une liste dédiée a dû
être créée (golf@perl.org
). C'est sur cette liste que les programmes
de test et les traditions du golf (classements, calculs de score,
mythes et légendes) se sont rapidement créés.
Voici une petite sélection des mythes du golf :
Certains joueurs passent tellement de temps à se chercher des solutions pour avoir le programme le plus court (parfois d'un seul caractère) qu'ils en ont mal aux yeux, au point d'avoir l'impression qu'ils vont exploser ou sortir de leurs orbites.
Les joueurs les plus doués ont en général plusieurs dizaines de caractères d'écart avec leurs poursuivants. Très rapidement, certains joueurs se sont demandé s'ils n'étaient pas en réalité des aliens, des créatures extra-terrestres avec des capacités de golfeurs sans comparaison avec celles des humains normaux. Ou avec des yeux supplémentaires.
Les principaux aliens identifiés sont : Ton Hospel, Eugene van der Pijll, Rick Klement et Mtv Europe.
Le site principal de golf Perl est http://perlgolf.sf.net/. Le site le plus actif aujourd'hui est le site de mini-golf de Terje Kristensen : http://terje.perlgolf.org/.
Le golf mène à tout : Ton Hospel s'est fait une spécialité d'envoyer sur p5p des rapports de bug avec des programmes reproduisant le bug en un nombre minimum de caractères.
(BooK)
Envoyez vos perles à perles@mongueurs.net
, elles seront peut-être
publiées dans un prochain numéro de Linux Magazine.
Copyright © Les Mongueurs de Perl, 2001-2011
pour le site.
Les auteurs conservent le copyright de leurs articles.