Sintaxis variable perldoc: $ foo vs $ {foo}
Pregunta
Solo estaba navegando por los perldocs cuando me encontré con esto en un ejemplo ( http://perldoc.perl.org/perlre.html#regular-expressions - Consulte el ejemplo de grupos de captura)
"aa" =~ /${a}/; # True
"aa" =~ /${b}/; # True
"aa0" =~ /${a}0/; # False!
"aa0" =~ /${b}0/; # True
"aa\x08" =~ /${a}0/; # True!
"aa\x08" =~ /${b}0/; # False
No pude encontrar ninguna documentación sobre lo que significa esa sintaxis.
Entonces, ¿qué significa el regex / $ {a} / significa en este contexto?
Solución
$ con soportes Evita la ambigüedad de los nombres de variables.Tal que:
$foo = 'house';
'housecat' =~ /$foo/; # matches
'cathouse' =~ /cat$foo/; # matches
'housecat' =~ /${foo}cat/; # matches
También en el enlace que ha dado, hay una definición por $ A y $ B, pero ha olvidado copiar aquí.
Otros consejos
Se necesitan los llaves para desambiguar $a
de $a0
.Tenga en cuenta que el tokenizador es codicioso, por lo que un nombre de variable es posible la secuencia .Si en una interpolación variable sigue otro alfabético o número, necesita la sintaxis de ${name}
.