Переменный синтаксис Perldoc: $ foo vs $ {foo}
Вопрос
Я просто просматривал perldocs, когда я наткнулся на это в примере ( http://perldoc.perl.org/perlre.html#regular-Expressions - см. Пример захвата групп)
"aa" =~ /${a}/; # True
"aa" =~ /${b}/; # True
"aa0" =~ /${a}0/; # False!
"aa0" =~ /${b}0/; # True
"aa\x08" =~ /${a}0/; # True!
"aa\x08" =~ /${b}0/; # False
.
Я не мог найти ни одной документации о том, что означает этот синтаксис.
Так, что делает Regex / $ {a} / значит в этом контексте?
Решение
$ С кронштейнами избегают двусмысленности имени переменной.Такое, что:
$foo = 'house';
'housecat' =~ /$foo/; # matches
'cathouse' =~ /cat$foo/; # matches
'housecat' =~ /${foo}cat/; # matches
.
Также в ссылке, которую вы предоставили, есть определение для $ A и $ B, но вы забыли скопировать здесь.
Другие советы
Брекеты необходимы для устранения регенеракодицетагкода из $a
.Обратите внимание, что токенизатор жадный, так что имена переменной является более длинным последовательностью .Если в переменной интерполяции еще один алфавит или число следует, вам нужен синтаксис $a0
.