Pergunta

Eu estava navegando nos perldocs quando me deparei com isso em um exemplo ( http://perldoc.perl.org/perlre.html#Regular-Expressions - veja exemplo 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

Não consegui encontrar nenhuma documentação sobre o que essa sintaxe significa.

Então, o que a regex /${a}/ significa neste contexto?

Foi útil?

Solução

$ entre colchetes evita a ambigüidade dos nomes das variáveis.De tal modo que:

$foo = 'house';
'housecat' =~ /$foo/;      # matches
'cathouse' =~ /cat$foo/;   # matches
'housecat' =~ /${foo}cat/; # matches

Também no link que você forneceu há uma definição para $a e $b, mas você esqueceu de copiar aqui.

Outras dicas

Os colchetes são necessários para desambiguar $a de $a0.Observe que o tokenizer é ganancioso, então um nome de variável é o mais longo sequência possível.Se em uma interpolação de variável segue outro número alfabético ou numérico, você precisa do ${name} sintaxe.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top