Trucs et astuces Perl

user_icon admin | icon2 Perl | icon4 22/2/2008 2h1| Type doc: article| Type File: txt| icon3 3 Comments

Trucs et astuces Perl


1. Colorisation de code Perl

perltidy -html toto.pl

2. Code Perl bien mis en forme

Le fichier de configuration de perltidy ( ~/.perltidyrc) suivant permet de respecter les règles de mise en forme proposé par Damian Conway dans son livre ' Perl Best Practices'

-l=78    # Longueur maximale 78 colonnes
-i=4     # Niveau d'indentation 4 colonnes
-ci=4    # Indentation de continuation 4 colonnes
-st      # Sortie vers STDOUT
-se      # Sortie vers STDERR
-vt=2    # Serrage vertical maximal
-cti=0   # Pas d'indentation pour parentheses fermantes
-pt=1    # Serrage moyen des parentheses
-bt=1    # Serrage moyen des accolades
-sbt=1   # Serrage moyen des crochets
-bbt=1   # Serrage moyen des accolades de bloc
-nsfs    # Pas d'espace avant point-virgule
-nolq    # Ne pas désindenter les longues chaînes quotées
-wbb="% + - * / x != == >= <= =~ !~ < > | & >= < = **= += *= &= <<= &&= -= /= |= >>= ||= .= %= ^= x="
         # Scinder avant tous les opérateurs

Prenons l'exemple du fichier toto.pl très mal formé en Perl :

my $a="toto";
if($a eq "titi")
{ $b=1;$c="Une très longue ligne de plus de 78 caratères pout montrer l'utilité de perltidy" }else{

# un commentaire
$b=2};print $b,
$a,$c . "\n";

Ci-desssous le code en sortie de:

perltidy toto.pl

my $a = "toto";

if ( $a eq "titi" ) {
    $b = 1;
    $c
        = "Une très longue ligne de plus de 78 caratères pout montrer l'utilité de perltidy";
}
else {

    # un commentaire
    $b = 2;
}
print $b, $a, $c . "\n";

Tout de même plus lisible non ?

Mais la ligne centrale dépasse les 78 caractères conseillé par Darmian Conway. Pour y remédier nous pouvons utiliser le script break_long_quotes.pl fourni avec perltidy.

break_long_quotes.pl toto.pl | perltidy

my $a = "toto";
if ( $a eq "titi" ) {
    $b = 1;
    $c = "Une très longue ligne de plus de 78 caratères pout montrer "

        . "l'utilité de perltidy";
}
else {

    # un commentaire
    $b = 2;
}
print $b, $a, $c . "\n";

L'indentation avec vim et emacs :

Pour permettre une 'bonne' indentation sous vim ajouter les lignes suivantes au fichier ~/.vimrc

set tabstop=4    "Un niveau d'indentation toutes les 4 colonnes
set expandtab    "Convertir les tabulations en espaces"
set shiftwidth=4 "Indenter/Déindenter de 4 colonnes"
set shiftround   "Toujours indenter/désindenter à l'arrêt le plus proche"

Et son équivalent pour emacs ( ~/.emacs)

(defalias    'perl-mode 'cperl-mode)


;; indentation de 4 espaces en mode cperl

'(cperl-close-parent-offset -4)
'(cperl-continued-statement-offset 4)
'(cperl-indent-level 4)
'(cperl-indent-parents-as-block t)
'(cperl-tab-always-indent t)

3. Mirrorer le CPAN

La commande suivante permet cet exploit :)

Attention tout de même cela fait plus de 280 000 fichiers à rapatrier.

rsync --progress -av --delete rsync.nic.funet.fi::CPAN  Rep_de_destination

Commentaires:

user_iconulhume icon4 22/2/2008 - 8h54
Je ne connais pas bien ce Darmian mais le coup des 78 colonnes ne date pas de cette époque que nous avons en commun où les écra
user_iconulhume icon4 22/2/2008 - 8h55
(fausse frappe, je poursuis :-) les écraNS, donc, ne faisaient que 80 colonne ?
user_icondab icon4 22/2/2008 - 12h3
Oui en effet c'est bien lié à cette époque ... que le gens de 20 ans ne peuvent pas connaitre ;) Mais ça permet aussi de lire facilement le code en console, dans les mails ...

Add_a_comment

Validator_logo
Catapulse v0.06
( 0.079766 s)