Syntaxe des variables Perldoc :$foo contre ${foo}
Question
Je parcourais justement les perldocs quand je suis tombé sur cela dans un exemple ( http://perldoc.perl.org/perlre.html#Regular-Expressions - voir exemple de groupes de capture)
"aa" =~ /${a}/; # True
"aa" =~ /${b}/; # True
"aa0" =~ /${a}0/; # False!
"aa0" =~ /${b}0/; # True
"aa\x08" =~ /${a}0/; # True!
"aa\x08" =~ /${b}0/; # False
Je n'ai trouvé aucune documentation sur ce que signifie cette syntaxe.
Alors, que signifie l'expression régulière /${a}/ dans ce contexte ?
La solution
$ avec des supports évitez l'ambiguïté des noms variables.Telle que:
$foo = 'house';
'housecat' =~ /$foo/; # matches
'cathouse' =~ /cat$foo/; # matches
'housecat' =~ /${foo}cat/; # matches
Également dans le lien que vous avez donné, il existe une définition pour $ A et $ B, mais vous avez oublié de copier ici.
Autres conseils
Les accolades sont nécessaires pour lever l’ambiguïté $a
depuis $a0
.Notez que le tokenizer est gourmand, donc un nom de variable est le le plus long séquence possible.Si dans une interpolation variable un autre caractère alphabétique ou un autre chiffre suit, vous avez besoin du ${name}
syntaxe.