
Des codes sources perlConsultez toutes les FAQ
Nombre d'auteurs : 13, nombre de questions : 59, dernière mise à jour : 27 mai 2011
Sommaire
→
DiversPour faire un sleep de moins d'une seconde, il est recommandé d'utiliser le module Time::HiResTime::HiRes qui est disponible dans le core.
#!/usr/bin/perl
use strict;
use warnings;
use Time::HiRes qw ( sleep );
print "Bonjour, je dors\n";
sleep 0.5; # pause d'une demie seconde
print "Au revoir\n";
Mais vous pouvez être encore beaucoup plus précis. A vous de jouer avec ce module très puissant.
Sous Linux ou Mac OS, il n'existe aucun utilitaire permettant de désinstaller un module Perl. Donc, voici un script qui peut vous permet de le faire proprement.
#!/usr/bin/perl
use strict;
use warnings;
use ExtUtils::Packlist;
use ExtUtils::Installed;
$ARGV[0] or die "Usage: $0 Module::Name\n";
my $mod = $ARGV[0];
my $inst = ExtUtils::Installed->new();
foreach my $item (sort($inst->files($mod))) {
print "suppression de $item\n";
unlink $item;
}
my $packfile = $inst->packlist($mod)->packlist_file();
print "suppression de $packfile\n";
unlink $packfile;
Sous Windows, vous pouvez désinstaller un module en utilisant ppm si vous utilisez activePerl. Néanmoins, ce script peut être aussi utilisable sous Windows.
ppm uninstall MonModule
NB: Si vous avez installé un module avec fink (sous Mac OS) ou apt-get, aptitude (Debian), yum (Red Hat), etc, utilisez ces mêmes utilitaires pour désinstaller vos modules. Il se peut que le script ci-dessus ne trouve pas le script car le répertoire d'installation lui est inconnu.
Le module Business::ISBNBusiness::ISBN
permet de tester la validité d'un numéro ISBN. Il permet
également de faire des conversions isbn10 en isbn13 et vice versa. Il est également
possible d'afficher le numéro isbn sous différentes formes et de trouver le code publié du
numéro ISBN, le pays etc... Vous pouvez même créer un code barre contenant le numéro ISBN.
Pour en savoir plus, il vous suffit de lire la documentation du module.
Voici un petit exemple (vous devez installer le module Business::ISBN et GD::Barcode)
#!/usr/bin/perl
use strict;
use warnings;
use Business::ISBN;
my $isbn_camelbook = '2841771407';
my $isbn = Business::ISBN->new($isbn_camelbook);
# Test validite
if ( $isbn->is_valid ) {
print "ISBN : $isbn_camelbook valide\n";
}
else {
die("ISBN : $isbn_camelbook invalide\n");
}
# convert
print "ISBN10 : ", $isbn->as_isbn10->as_string, "\n";
print "ISBN13 : ", $isbn->as_isbn13->as_string, "\n";
print "ISBN STRING : ", $isbn->as_string, "\n";
#print the ISBN with hyphens at specified positions.
#this not does affect the default positions
print "Autre ecriture : ", $isbn->as_string( [] ), "\n";
#print the group code or publisher code
print "Groupe code : ", $isbn->group_code, "\n";
print "Groupe : ", $isbn->group, "\n";
print "Code publie : ", $isbn->publisher_code, "\n";
# création d'un code barre de type EAN13 au format png
open( PNG, '>', 'codebarre_isbn.png' );
binmode PNG;
print PNG $isbn->png_barcode;
close(PNG);
ISBN : 2841771407 valide
ISBN10 : 2-84177-140-7
ISBN13 : 978-2-84177-140-0
ISBN STRING : 2-84177-140-7
Autre ecriture : 2841771407
Groupe code : 2
Groupe : French speaking area
Code publie : 84177
Voici l'image du code barre générée 
Le numéro SIRET est un identifiant d'établissement.
Cet identifiant numérique de 14 chiffres est articulé en deux parties :
la première est le numéro SIREN de l'entreprise (ou unité légale ou personne
juridique) à laquelle appartient l'unité SIRET ; la seconde, habituellement
appelée NIC (Numéro Interne de Classement), se compose d'un numéro d'ordre à
quatre chiffres attribué à l'établissement et d'un chiffre de contrôle, qui
permet de vérifier la validité de l'ensemble du numéro SIRET.
Il existe un module Business::FR::SIRETBusiness::FR::SIRET
permettant de vérifier que le numéro siret est proprement formaté, il
ne vérifie absolument pas que la compagnie est existante. Pour cette dernière vérification,
il existe des sites web vous permettant de faire la faire.
voici un code d'exemple :
#!/usr/bin/perl
use strict;
use warnings;
use Business::FR::SIRET;
my $numero_siret = '54209790203949';
my $c = Business::FR::SIRET->new($numero_siret);
print "SIRET ", $c->siret() . " est valide\n" if $c->is_valid();
SIRET 54209790203949 est valide
Pour tester la validité d'une adresse électronique, inutile de s'acharner à trouver
la bonne expression régulière. Il existe des modules perl le faisant pour nous proprement.
Voici un exemple de codes utilisant des modules différentsEmail::Valid Email::Valid
et Mail::CheckUserMail::CheckUser
#!/usr/bin/perl
use strict;
use warnings;
use Email::Valid;
my $email = 'toto@my_google.fr';
if ( Email::Valid->address($email) ) {
print "Email::Valid => $email valide\n";
}
else {
print "Email::Valid => $email no, valide\n";
}
Email::Valid => toto@my_google.fr no, valide
#!/usr/bin/perl
use strict;
use warnings;
use Mail::CheckUser qw(check_email);
$Mail::CheckUser::Timeout = 5;
if ( check_email($email) ) {
print "Mail::CheckUser => E-mail address <$email> is OK\n";
}
else {
print "Mail::CheckUser => E-mail address <$email> isn't valid:\n";
}
Mail::CheckUser => E-mail address <toto@my_google.fr> isn't valid:
Voilà !!
#!/usr/bin/perl
use strict;
use warnings;
=for rabot
La fonction rabot() rabote une chaîne de caractère à une longueur donnée si la longueur initiale est supérieure.
Entrées obligatoires : Chaîne de caractères et Longueur
Entrée optionnelle : Booléen (ne coupe pas les mots si vrai)
Sortie : Chaîne de caractères résultante
=cut
print rabot( 'Ceci est un premier exemple de phrase.', 20 ) . "\n";
print rabot( 'Ceci est un second exemple de phrase.', 20, 1 ) . "\n";
sub rabot {
my ( $texte, $taille, $coupe ) = @_;
unless ($coupe) { $coupe = 0; }
if ( length($texte) > $taille ) {
# Variante HTML : $suspension = '&hellep;';
my $suspension = '...';
my $ajustement = length($suspension);
$texte = substr( $texte, 0, $taille - $ajustement );
$texte =~ s/([^ ,;:\.!\?\(\)])[ ,;:\.!\?\(\)]+[^ ]*$/$1/ if ($coupe);
if ($ajustement) { $texte = $texte . $suspension; }
}
return $texte;
}
Ceci est un premi...
Ceci est un...


