FAQ PerlConsultez toutes les FAQ

Nombre d'auteurs : 18, nombre de questions : 250, dernière mise à jour : 29 octobre 2015  Ajouter une question

 

Bienvenue sur la FAQ Perl. Cette FAQ a pour vocation de vous enseigner ou de vous faire revoir les notions élémentaires de ce fantastique langage. Perl est très utilisé dans différents domaines depuis la gestion système, le réseaux, l'administration de bases de données, le web (CGI), la bureautique, la conception d'interfaces graphiques ou des contextes scientifiques telle la bioinformatique. Nous espérons que cette FAQ vous sera d'une grande utilité.

Vous souhaitez participer à l'amélioration de cette FAQ, n'hésitez pas !! Commentez

Bonne lecture !


SommaireCodes sources utilesDes codes sourcesDes codes sources Divers (8)
précédent sommaire suivant
 

Pour faire un sleep de moins d'une seconde, il est recommandé d'utiliser le module Time::HiRes qui est disponible dans le core.

Code perl : Sélectionner tout
1
2
3
4
5
6
7
8
#!/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. À vous de jouer avec ce module très puissant.

Mis à jour le 15 juin 2009 djibril

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.

Code perl : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/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.

Code : Sélectionner tout
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.

Mis à jour le 15 juin 2009 djibril

Le module Business::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)

Code perl : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/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);
Code : Sélectionner tout
1
2
3
4
5
6
7
8
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

Mis à jour le 28 octobre 2009 djibril

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::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 :

Code perl : Sélectionner tout
1
2
3
4
5
6
7
#!/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();
Code : Sélectionner tout
SIRET 54209790203949 est valide

Mis à jour le 28 octobre 2009 djibril

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érents Email::Valid et Mail::CheckUser

Code perl : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/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"; 
}
Code : Sélectionner tout
Email::Valid => toto@my_google.fr no, valide
Code perl : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
#!/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"; 
}
Code : Sélectionner tout
Mail::CheckUser => E-mail address <toto@my_google.fr> isn't valid:
Voilà !!

Mis à jour le 28 octobre 2009 djibril

Code perl : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/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; 
}
Code : Sélectionner tout
1
2
Ceci est un premi... 
Ceci est un...

Mis à jour le 28 octobre 2009 vil-farfadet

Voici un code Perl qui permet de convertir un code RVB ou RGB (pour les anglais) en hexadécimal 6-digits.

Code perl : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/perl 
use warnings; 
use strict; 
  
my ($rouge, $vert, $bleu) = (125, 35, 144); 
print "$rouge, $vert, $bleu -> ", rvb_to_hexa($rouge, $vert, $bleu), "\n"; 
  
sub rvb_to_hexa { 
  my ( $rouge, $vert, $bleu ) = @_; 
  my $hexacolor = sprintf '#%02X%02X%02X', $rouge, $vert, $bleu; 
  return uc $hexacolor; 
}
Code : Sélectionner tout
125, 35, 144 -> #7D2390

Mis à jour le 20 mai 2013 djibril

Voici un code Perl qui permet de convertir un code hexadécimal 3-digits ou 6-digits en code RVB ou RGB (pour les anglais).

Code perl : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/perl 
use warnings; 
use strict; 
  
my @CouleurHexa = ( '#896E4A', '#123456', '#2CEAAC', '#FFFFFF', '#000000', '#FF0000', '#7FF'); 
foreach my $couleur ( @CouleurHexa ) { 
    if ( my ($rouge, $vert, $bleu) = hexa_to_rvb($couleur) ) { 
        print "$couleur -> $rouge, $vert, $bleu\n"; 
    } 
    else { 
        print "$couleur -> introuvable\n"; 
    } 
} 
sub hexa_to_rvb { 
    my ($hexacolor) = @_; 
  
    $hexacolor = uc $hexacolor; 
    $hexacolor =~ s{^#([0-9A-F])([0-9A-F])([0-9A-F])$}{#$1$1$2$2$3$3}; 
  
    my ( $rouge, $vert, $bleu ) = (); 
    if ( $hexacolor =~ m{^#(?:[0-9A-F]{2}){3}$} ) { 
        $rouge = hex( substr $hexacolor, 1, 2 ); 
        $vert  = hex( substr $hexacolor, 3, 2 ); 
        $bleu  = hex( substr $hexacolor, 5, 2 ); 
    } 
    else { 
        return; 
    } 
  
    return ($rouge,$vert,$bleu); 
}
Code : Sélectionner tout
1
2
3
4
5
6
7
#896E4A -> 137, 110, 74 
#123456 -> 18, 52, 86 
#2CEAAC -> 44, 234, 172 
#FFFFFF -> 255, 255, 255 
#000000 -> 0, 0, 0 
#FF0000 -> 255, 0, 0 
#7FF -> 119, 255, 255

Mis à jour le 23 avril 2014 djibril

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2017 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Responsable bénévole de la rubrique Perl : djibril -