salut à tous,
J'ai une instruction que je trouve trop longue et moche, auriez-vous des idées d'optimisation ?
à plus tardCode:
1
2
3
4 if ($admin =~ /[^A-Za-z0-9-\[\]\\\`\^\{\}\_]/ || $admin =~ /^[0-9]/ || length($admin)>32) { # .... }
Version imprimable
salut à tous,
J'ai une instruction que je trouve trop longue et moche, auriez-vous des idées d'optimisation ?
à plus tardCode:
1
2
3
4 if ($admin =~ /[^A-Za-z0-9-\[\]\\\`\^\{\}\_]/ || $admin =~ /^[0-9]/ || length($admin)>32) { # .... }
Déjà, il y a l'abréviation de classe \w qui peut remplacer [A-Za-z0-9_] et qu'on peut mettre dans une classe. Tant qu'à faire, autant utiliser \d pour remplacer [0-9] également.
Par ailleurs, tu peux fusionner tes deux regex.
Ça reste assez moche, il est vrai. Je suis peut-être parti sur une mauvaise piste, il y a sans doute moyen de rendre tout ça plus lisible avec l'option /x.Code:
1
2
3 if ($admin =~ /^\d|[^-\w\[\]\\\`\^\{\}]/ || length($admin)>32) { # .... }
EDIT : ah, mais oui, en fait, tu échappes des tas de caractères qui n'ont pas de signification spéciale à l'intérieur d'une classe.
Du coup, on peut écrire ça comme ça :
C'est encore moche, mais c'est déjà plus respirable.Code:
1
2
3 if ($admin =~ /^\d|[^-\w\[\]\\`^{}]/ || length($admin)>32) { # .... }
Yop,
merci bien Schmorgluck, en effet c'est déja plus réspirable et c'est exactement ce qu'il me fallait ;)
Bonjour,
Quelqu'un peu me dire à quoi sert cette ligne de code et m'expliquer comment elle fonctionne? Je débute en perl et depuis que j'ai commencé, je n'arrête pas de voir des trucs qui ressemblent à ça : /^\d|[^-\w\[\]\\`^{}]/
Avouez quand meme que c'est illisible !! Avez-vous un lien à me fournir avec toutes ces explications?
Ou bien pouvez-vous m'expliquer? :oops::oops::oops:
Merci d'avance,
Olivier