J'aurais une question concernant la mise en page du code Perl : il me
semble que Perl n'est normalement pas sensible aux espaces et sauts de
lignes tant qu'une ligne de code n'a pas =E9t=E9 ferm=E9e par ';'.
Cependant, si j'ai une longue ligne du style :
if ($line =3D~
/^(.*;)(\d{2}\/\d{2}\/\d{4}|\d{4}-\d{2}-\d{2})(;[A-Z0-9-]{3,};)([A-Za-z0-9-=
_]{3,};)([A-Za-z0-9-_]{3,};)(\w+);(.*?;;)([0-9
,;]*)$/)
que je veux scinder :
if ($line =3D~ /^(.*;)(\d{2}\/\d{2}\/\d{4}|\d{4}-\d{2}-\d{2})(;[A-Z0-9-
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Paul Gaborit
À (at) 26 Jan 2006 05:06:57 -0800, "ctobini" écrivait (wrote):
J'aurais une question concernant la mise en page du code Perl : il me semble que Perl n'est normalement pas sensible aux espaces et sauts de lignes tant qu'une ligne de code n'a pas été fermée par ';'.
C'est vrai indépendament du ';'. La règle générale serait plutôt : partout où on peut mettre un espace on peut mettre plusieurs espaces (dont des sauts de lignes).
Cependant, si j'ai une longue ligne du style :
if ($line =~ /^(.*;)(d{2}/d{2}/d{4}|d{4}-d{2}-d{2})(;[A-Z0-9-]{3,};)([A-Za-z0-9-_]{3,};)([A-Za-z0-9-_]{3,};)(w+);(.*?;;)([0-9 ,;]*)$/)
que je veux scinder :
if ($line =~ /^(.*;)(d{2}/d{2}/d{4}|d{4}-d{2}-d{2})(;[A-Z0-9-
j'ai systématiquement une erreur à la l'interprétation du code.
Sauriez-vous comment y remédier ?
Le problème ici est que, justement, on ne peut pas ajouter un espace sans changer l'interprétation de l'expression rationnelle. Heureusement, Perl propose un mécanisme pour cela : le modificateur /x (les expressions rationnelles étendues).
Le code suivant :
if (m/([a-z]+) d{1,3} ([a-z]+)/) { # sans /x ! ... }
est équivalent à :
if (m/ ([a-z]+) # une ou plusieurs lettres minuscules # suivi d'un blanc d{1,3} # suivi d'un nombre de 1 à 3 chiffres # suivi d'un blanc ([a-z]+) # suivi d'une ou plusieurs lettres minuscules /x) { # tout cela grâce au /x ... }
Cela permet de couper l'expression où on veut mais aussi de la commenter...
Pour en savoir plus :
perldoc perlop
(section "Gory details of parsing quoted constructs")
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) 26 Jan 2006 05:06:57 -0800,
"ctobini" <ctemp2@free.fr> écrivait (wrote):
J'aurais une question concernant la mise en page du code Perl : il me
semble que Perl n'est normalement pas sensible aux espaces et sauts de
lignes tant qu'une ligne de code n'a pas été fermée par ';'.
C'est vrai indépendament du ';'. La règle générale serait plutôt :
partout où on peut mettre un espace on peut mettre plusieurs espaces
(dont des sauts de lignes).
Cependant, si j'ai une longue ligne du style :
if ($line =~
/^(.*;)(d{2}/d{2}/d{4}|d{4}-d{2}-d{2})(;[A-Z0-9-]{3,};)([A-Za-z0-9-_]{3,};)([A-Za-z0-9-_]{3,};)(w+);(.*?;;)([0-9
,;]*)$/)
que je veux scinder :
if ($line =~ /^(.*;)(d{2}/d{2}/d{4}|d{4}-d{2}-d{2})(;[A-Z0-9-
j'ai systématiquement une erreur à la l'interprétation du code.
Sauriez-vous comment y remédier ?
Le problème ici est que, justement, on ne peut pas ajouter un espace
sans changer l'interprétation de l'expression
rationnelle. Heureusement, Perl propose un mécanisme pour cela : le
modificateur /x (les expressions rationnelles étendues).
Le code suivant :
if (m/([a-z]+) d{1,3} ([a-z]+)/) { # sans /x !
...
}
est équivalent à :
if (m/
([a-z]+) # une ou plusieurs lettres minuscules
# suivi d'un blanc
d{1,3} # suivi d'un nombre de 1 à 3 chiffres
# suivi d'un blanc
([a-z]+) # suivi d'une ou plusieurs lettres minuscules
/x) { # tout cela grâce au /x
...
}
Cela permet de couper l'expression où on veut mais aussi de la commenter...
Pour en savoir plus :
perldoc perlop
(section "Gory details of parsing quoted constructs")
À (at) 26 Jan 2006 05:06:57 -0800, "ctobini" écrivait (wrote):
J'aurais une question concernant la mise en page du code Perl : il me semble que Perl n'est normalement pas sensible aux espaces et sauts de lignes tant qu'une ligne de code n'a pas été fermée par ';'.
C'est vrai indépendament du ';'. La règle générale serait plutôt : partout où on peut mettre un espace on peut mettre plusieurs espaces (dont des sauts de lignes).
Cependant, si j'ai une longue ligne du style :
if ($line =~ /^(.*;)(d{2}/d{2}/d{4}|d{4}-d{2}-d{2})(;[A-Z0-9-]{3,};)([A-Za-z0-9-_]{3,};)([A-Za-z0-9-_]{3,};)(w+);(.*?;;)([0-9 ,;]*)$/)
que je veux scinder :
if ($line =~ /^(.*;)(d{2}/d{2}/d{4}|d{4}-d{2}-d{2})(;[A-Z0-9-
j'ai systématiquement une erreur à la l'interprétation du code.
Sauriez-vous comment y remédier ?
Le problème ici est que, justement, on ne peut pas ajouter un espace sans changer l'interprétation de l'expression rationnelle. Heureusement, Perl propose un mécanisme pour cela : le modificateur /x (les expressions rationnelles étendues).
Le code suivant :
if (m/([a-z]+) d{1,3} ([a-z]+)/) { # sans /x ! ... }
est équivalent à :
if (m/ ([a-z]+) # une ou plusieurs lettres minuscules # suivi d'un blanc d{1,3} # suivi d'un nombre de 1 à 3 chiffres # suivi d'un blanc ([a-z]+) # suivi d'une ou plusieurs lettres minuscules /x) { # tout cela grâce au /x ... }
Cela permet de couper l'expression où on veut mais aussi de la commenter...
Pour en savoir plus :
perldoc perlop
(section "Gory details of parsing quoted constructs")
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Nicolas George
"ctobini" wrote in message :
J'aurais une question concernant la mise en page du code Perl : il me semble que Perl n'est normalement pas sensible aux espaces et sauts de lignes tant qu'une ligne de code n'a pas été fermée par ';'.
Perl est sensible aux espaces et aux retours à la ligne à certains endroits, en particulier dans les chaînes de caractères et les expressions rationnelles.
Sauriez-vous comment y remédier ?
Regarde l'option x (extended regular expressions.) des opérateurs d'expressions rationnelles.
"ctobini" wrote in message
<1138280817.469878.224890@z14g2000cwz.googlegroups.com>:
J'aurais une question concernant la mise en page du code Perl : il me
semble que Perl n'est normalement pas sensible aux espaces et sauts de
lignes tant qu'une ligne de code n'a pas été fermée par ';'.
Perl est sensible aux espaces et aux retours à la ligne à certains endroits,
en particulier dans les chaînes de caractères et les expressions
rationnelles.
Sauriez-vous comment y remédier ?
Regarde l'option x (extended regular expressions.) des opérateurs
d'expressions rationnelles.
J'aurais une question concernant la mise en page du code Perl : il me semble que Perl n'est normalement pas sensible aux espaces et sauts de lignes tant qu'une ligne de code n'a pas été fermée par ';'.
Perl est sensible aux espaces et aux retours à la ligne à certains endroits, en particulier dans les chaînes de caractères et les expressions rationnelles.
Sauriez-vous comment y remédier ?
Regarde l'option x (extended regular expressions.) des opérateurs d'expressions rationnelles.