GNU/Linux >> Tutoriels Linux >  >> Linux

20 conseils de programmation Killer Perl pour les débutants sur UNIX / Linux OS

Si vous êtes un administrateur système Linux qui écrit occasionnellement du code perl (ou) un développeur qui souhaite apprendre le langage de programmation perl , ces 20 astuces de base pour la programmation Perl et les astuces expliquées dans cet article vous donneront un coup de pouce.

1. Répertorier tous les modules Perl installés à partir de la ligne de commande Unix

Obtenez une liste de tous les modules perl installés comme indiqué ci-dessous.

$ perl -MFile::Find=find -MFile::Spec::Functions -Tlw -e 'find { wanted => sub { print canonpath $_ if /\.pm\z/ }, no_chdir => 1 }, @INC'

/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/Filter.pm
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/LinkExtor.pm
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/PullParser.pm
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/Parser.pm
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/TokeParser.pm
.....

Dans l'exemple ci-dessus,

  • Fichier : :Rechercher et Fichier::Spec::Fonctions module sont utilisés pour lister tous les modules installés.
  • Option -M charge le module. Il exécute use module avant d'exécuter le script
  • Option -T active la vérification des traces, qui demande à perl de garder une trace des données de l'utilisateur et d'éviter de faire quoi que ce soit d'incertain avec. Ici, cette option est utilisée pour éviter de prendre le nom du répertoire courant du @INC variable et répertoriant les fichiers .pm disponibles à partir du répertoire de manière récursive.
  • Option -l active le traitement automatique de fin de ligne dans la sortie. Les instructions d'impression auront le nouveau séparateur de ligne (\n) ajouté à la fin de chaque ligne.
  • option -w imprime tous les messages d'avertissement.
  • -e option indique que la chaîne suivante doit être interprétée comme un script perl (c'est-à-dire une séquence de commandes).

2. Répertoriez tous les modules Perl installés à partir d'un script perl (à l'aide d'ExtUtils ::Installed package)

Utilisez l'extrait de code perl suivant pour obtenir une liste des modules perl installés.

my $Inst = ExtUtils::Installed->new();
my @Modules = $Inst->modules();
print "Current List of Installed PERL Modules:\n\n";
foreach my $mod(@Modules){
print "$mod\n";
}

Remarque :Le module ExtUtils::Installed n'est pas pré-installé avec le programme perl. Vous devez donc l'installer à partir de cpan.

3. Répertorier les modules Perl à l'aide de la commande Perldoc

perldoc perlmodlib répertorie tous les modules préinstallés avec le programme perl.

$ perldoc perlmodlib

       Attribute::Handlers Simpler definition of attribute handlers
       AutoLoader  Load subroutines only on demand
       .........

Remarque : Vous pouvez également utiliser la commande "perldoc perllocal" pour identifier les modules perl supplémentaires qui sont installés.

$ perldoc perllocal

La commande perldoc perllocal répertorie tous les modules optionnels installés dans le système avec les informations suivantes :

  • Date d'installation
  • Emplacement du répertoire où le module perl est installé
  • Numéro de version du module Perl
  • etc.,

4. Afficher la documentation Perl à partir de la ligne de commande Unix

Vous pouvez utiliser la commande perldoc ou man pour obtenir de l'aide sur un module perl particulier, comme indiqué ci-dessous.

$ perldoc Regexp::Common

(or)

$ man Regexp::Common

Si le document perl ne suffit pas, utilisez l'option perldoc -m pour afficher à la fois le code source et la documentation du pod non formaté du module perl spécifié.

$ perldoc -m Regexp::Common

Pour afficher la documentation sur une fonction perl spécifique, utilisez l'option -f, comme indiqué ci-dessous.

$ perldoc -f splice

5. Afficher la documentation Perl en ligne (ou la télécharger pour une utilisation hors ligne)

Beaucoup d'excellents tutoriels perl sont disponibles en ligne sur la documentation de programmation Perl.

À partir de ce site Web, vous pouvez également télécharger la version HTML ou PDF de la documentation perl pour une consultation hors ligne.

  • Version complète (contient des fichiers HTML et PDF) – perldoc.tar.gz
  • Version allégée (contient uniquement des fichiers HTML) – perldoc-html.tar.gz

6. Lire la documentation Perl à l'aide de Podbrowser

Téléchargez le podbrowser. Vous pouvez parcourir visuellement les modules perl installés, les fonctions et la documentation perl à partir du podbrowser. Depuis leur site Web :

PodBrowser is a documentation browser for Perl.
You can view, search and print documentation for Perl's
builtin functions, its "perldoc" pages, pragmatic modules
and the default and user-installed modules.

Remarque : Vous pouvez également utiliser l'éditeur Vim comme Perl-IDE comme nous l'avons vu précédemment.

7. Modifier manuellement la configuration du module CPAN

Pour installer les modules perl à partir de la ligne de commande Linux, utilisez CPAN. Nous avons discuté plus tôt de la façon d'installer les modules perl - à la fois manuellement et à l'aide de la commande CPAN.

La première fois que vous utilisez le module Perl CPAN ( perl -MCPAN ), un script est exécuté pour configurer plusieurs options. Par exemple, il configure l'emplacement des fichiers tar, gzip et unzip, la taille du cache pour le répertoire de construction, l'emplacement du fichier source, etc.

Pour reconfigurer manuellement les fichiers de configuration du module CPAN, vous pouvez modifier l'un des fichiers suivants.

  • ~/.cpan/CPAN/Maconfig.pm – Fichier de configuration Perl CPAN spécifique à l'utilisateur
  • /etc/perl/CPAN/Config.pm - Le fichier de configuration Perl CPAN à l'échelle du système est stocké quelque part dans l'arborescence du répertoire du module perl.
$ vim ~/.cpan/CPAN/MyConfig.pm

(and / or)

$ vim /etc/perl/CPAN/Config.pm

8. Modifier les configurations du module CPAN de manière interactive

Lancez le shell cpan comme indiqué ci-dessous et exécutez o conf init , qui vous demandera "êtes-vous prêt pour la configuration manuelle", donnez votre option (Oui / Non) pour continuer. Cela listera tous les paramètres de configuration avec sa valeur.

$ perl -MCPAN -e shell

cpan> o conf init

cpan> o conf

9. Vérifiez si un module Perl est installé

Si vous souhaitez savoir si un module perl (par exemple, Regexp::Common) est installé, exécutez la commande suivante. Si vous obtenez "1" comme sortie, alors le module perl spécifié est installé. Sinon, vous obtiendrez le message d'erreur comme indiqué ci-dessous.

$ perl -MRegexp::Common -le 'print 1'

Can't locate Regexp/Common.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .).

Remarque : Vous pouvez également vérifier si le module perl est installé à l'aide de perldoc ou de la commande man. Si le module perl est installé, la page de manuel du module s'ouvrira avec succès. Sinon, il indiquera "aucun manuel / documentation trouvé pour ce module"

$ perldoc Regexp::Common

$ man Regexp::Common

10. Lister les répertoires où se trouvent les modules Perl

Le tableau perl @INC contient la liste des endroits où les constructions « do EXPR », « require » ou « use » recherchent leurs fichiers de bibliothèque. La ligne suivante montre le contenu du tableau perl @INC :

$ perl -e 'foreach $folder (@INC) { print "$folder\n";}'

11. Vérifier la version d'un module Perl installé

Pour vérifier le numéro de version d'un module, utilisez la commande suivante.

#-- check the version number of CGI module
$ perl -MCGI -e 'print "$CGI::VERSION \n"'

#-- check the version number of Regexp::Common module
$ perl -MRegexp::Common -e 'print "$Regexp::Common::VERSION \n"'

Remarque : Assurez-vous également de lire notre critique du livre Perl Best Practices.

12. Spécifiez la version minimale du module Perl à utiliser

Parfois, vous voudrez peut-être utiliser une version spécifique d'un module perl dans votre programme. Pour éviter d'utiliser une version antérieure de ce module, ajoutez le numéro de version minimum souhaité dans l'instruction use 'module' comme indiqué ci-dessous.

#-- Use version 5.8 of later of module LWP
use LWP 5.8

Remarque : Votre programme perl se terminera avec un message d'erreur approprié si la version du module installé est inférieure à la version que vous avez spécifiée dans la commande use.

13. Modules Perl utiles pour développer des applications Web

Si vous développez une application Web, vous pouvez envisager d'utiliser les modules perl suivants.

  • CGI – Module à usage général pour la création de pages Web
  • Modèle – Template Toolkit pour générer du contenu Web dynamique
  • LWP – LWP est utilisé pour récupérer le contenu Web
  • WWW::Mécaniser – Utilisez-le pour automatiser l'interaction avec un site Web

14. Déterminez le système d'exploitation sous lequel le script Perl s'exécute

Le nom du système d'exploitation sous-jacent est stocké dans la variable $^O. Voici quelques-unes des valeurs $^O courantes

  • linux – Linux
  • MSWin32 – Windows
  • aix – AIX
  • solaris – Solaris

Remarque : La valeur stockée dans $^O contient uniquement le nom du système d'exploitation, pas le numéro de version. Pour déterminer le numéro de version, envisagez d'utiliser POSIX::uname() du package POSIX.

15. Définir des valeurs constantes dans le script Perl

La meilleure façon de définir des valeurs constantes est d'utiliser Perl Readonly ou   Constante module comme indiqué ci-dessous.

use Readonly;
Readonly my $PI => 3.1415926535;

(or)

use Constant PI => 3.1415926535;

Veuillez noter ce qui suit :

  • À l'aide du module Readonly, vous pouvez définir des scalaires, des hachages et des tableaux en lecture seule.
  • Si vous essayez de modifier une variable en lecture seule, le programme mourra.

16. Déterminer l'utilisateur du système d'exploitation et/ou le groupe de système d'exploitation exécutant un script Perl

Utilisez les variables prédéfinies suivantes pour obtenir les informations sur l'utilisateur et le groupe du processus en cours :

  • $ – identifiant utilisateur réel (uid); valeur unique
  • $> – identifiant d'utilisateur effectif (euid); valeur unique
  • $( – identifiant de groupe réel (gid); liste (séparée par des espaces) des groupes
  • $) – identifiant de groupe effectif (egid); liste (séparée par des espaces) des groupes

Veuillez noter ce qui suit :

  • Ces informations s'appliquent uniquement aux systèmes Unix
  • Les valeurs que contiennent ces variables sont des entiers.
  • Pour obtenir les noms d'utilisateur et de groupe, utilisez "(getpwuid($<))[0]" (pour les informations sur l'utilisateur) et "getgrgid($()" (pour les groupes).

17. Exécuter des commandes externes

Il existe de nombreuses façons d'exécuter des commandes externes à partir de Perl, comme expliqué ci-dessous.

  • système() – vous voulez exécuter une commande et ne voulez pas capturer sa sortie
  • exécution – vous ne voulez pas revenir au script perl appelant
  • backticks – vous voulez capturer la sortie de la commande
  • ouvrir – vous souhaitez diriger la commande (en entrée ou en sortie) vers votre script perl

18. Analyser un script Perl désordonné à l'aide de B ::Deparse

Vous avez un morceau de code Perl obfusqué ou tout simplement désordonné et difficile à lire? Le B::Deparse module peut être en mesure d'aider. Il compile, puis décompile le programme qui lui est donné, le développe et le formate correctement. Il supprime les lignes de commentaires écrites dans le programme perl.

Pour l'exécuter en ligne de commande, tapez « perl -MO=Deparse prog.pl ». Voici un exemple de son utilisation,

Créez d'abord le programme d'entrée :

$ cat scary.pl
for(74,117,115,116){$::a.=chr};(($_.='qwertyui')&&
(tr/yuiqwert/her anot/))for($::b);for($::c){$_.=$^X;
/(p.{2}l)/;$_=$1}$::b=~/(..)$/;print("$::a$::b $::c hack$1.");

Passez le script perl scary.pl au module Deparse

$ perl -MO=Deparse scary.pl
foreach $_ (74, 117, 115, 116) {
$a .= chr $_;
}
;
$_ .= 'qwertyui' and tr/eiqrtuwy/nr oteah/ foreach ($b);
foreach $_ ($c) {
$_ .= $^X;
/(p.{2}l)/;
$_ = $1;
}
$b =~ /(..)$/;
print "$a$b $c hack$1.";
scary.pl syntax OK

19. Répertorier les pilotes DBI installés

DBI est le module d'interface de base de données standard pour Perl. Le programme Perl suivant imprime une liste de tous les pilotes DBI installés.

use strict;
use warnings;

use DBI;

print map "$_\n",DBI->available_drivers;

Exemple de sortie du programme ci-dessus :

DBM
ExampleP
File
Proxy
Sponge
mysql

Si le pilote dont vous avez besoin n'est pas installé, utilisez CPAN pour trouver le bon module DBD (pilote de base de données).

20. Variable spéciale d'expression régulière

L'une des fonctionnalités les plus utiles ou la plus puissante des fonctionnalités de manipulation de chaînes en perl est l'expression régulière.

Au cœur de cela se trouve l'expression régulière qui est partagée par de nombreux autres utilitaires UNIX.
Perl a une multitude de variables spéciales qui sont remplies après chaque correspondance de regex m// ou s///.

  • $1, $2, $3, etc. détiennent les backreferences.
  • $+ contient la dernière référence arrière (numéro le plus élevé).
  • $&(esperluette dollar) contient l'intégralité de la correspondance de regex.
  • $' (dollar suivi d'une apostrophe ou d'un guillemet simple) contient la partie de la chaîne après (à droite de) la correspondance de regex.
  • $` (dollar backtick) contient la partie de la chaîne avant (à gauche de) la correspondance de regex.

L'utilisation de ces variables n'est pas recommandée dans les scripts Perl lorsque les performances sont importantes, car cela ralentit tous Perl regex correspond à l'ensemble de votre script perl.

Toutes ces variables sont en lecture seule et persistent jusqu'à la prochaine tentative de correspondance d'expression régulière.
Exemple

$string = "This is the geek stuff article for perl learner";
$string =~ /the (g.*) stuff(.*) /;
print "Matched String=>$&\nBefore Match=>$`\nAfter Match=>$'\nLast Paren=>$+\nFirst Paren=>$1\n";

Sortie de l'exemple ci-dessus :

Matched String=>the geek stuff article for perl
Before Match=>This is
After Match=>learner
Last Paren=> article for perl
First Paren=>geek

Linux
  1. 3 conseils pour imprimer avec Linux

  2. 6 outils et astuces open source pour sécuriser un serveur Linux pour les débutants

  3. 8 conseils pour la ligne de commande Linux

  4. Commande Linux killall pour les débutants (8 exemples)

  5. Quels sont les bons livres Linux/Unix pour un utilisateur avancé ?

Tutoriel de commande Linux w pour débutants (5 exemples)

Tutoriel de commande Linux ss pour les débutants (8 exemples)

Commande de localisation Linux pour les débutants (8 exemples)

16 exemples pratiques de commande Linux LS pour les débutants

Explication de la commande Linux mv pour les débutants (8 exemples)

Raccourcis, astuces et astuces de productivité de l'éditeur Linux VI pour les débutants