Des codes sources perlConsultez toutes les FAQ
Nombre d'auteurs : 13, nombre de questions : 59, dernière mise à jour : 27 mai 2011
Pour 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...