Sintassi variabile Perldoc: $ foo vs $ {foo}
Domanda
Stavo solo sfogliando i perldocs quando ho incontrato questo in un esempio ( http://perldoc.perl.org/perlre.html#regolal-expressions - Vedi esempio di gruppi di cattura)
"aa" =~ /${a}/; # True
"aa" =~ /${b}/; # True
"aa0" =~ /${a}0/; # False!
"aa0" =~ /${b}0/; # True
"aa\x08" =~ /${a}0/; # True!
"aa\x08" =~ /${b}0/; # False
.
Non riesco a trovare alcuna documentazione su cosa significhi quella sintassi.
Allora, cosa fa il regex / $ {A} / significa in questo contesto?
Soluzione
$ con parentesi Evitare l'ambiguità dei nomi delle variabili.Tale che:
$foo = 'house';
'housecat' =~ /$foo/; # matches
'cathouse' =~ /cat$foo/; # matches
'housecat' =~ /${foo}cat/; # matches
.
Anche nel link che hai dato, c'è una definizione per $ A e $ B, ma hai dimenticato di copiare qui.
Altri suggerimenti
Le parentesi graffe sono necessarie per disambiguare $a
da $a0
.Si noti che il tokenizer è avido, quindi un nome variabile è la sequenza più lunga possibile.Se in un'interpolazione variabile segue da un altro alfabetico o numero, è necessaria la sintassi ${name}
.