Проблема в том, что оператор .
не распознается как оператор внутри кавычек.Точечные операторы используют между строками, а не внутри строками.Используя точку внутри строки, вставляем ее буквально.Эта буквальная точка в шаблоне приводит к сбою команды grep
в вашем коде.
Также обратите внимание, что внутри кавычек Perl пытается интерполировать переменную, используя определенные правила синтаксического анализа идентификатора.См. perldoc perlop
для различных типов цитирования, которые используются в Perl, и смотрите perldoc perldata
для получения информации о правилах синтаксического анализа идентификатора.
В итоге,чтобы интерполировать переменную $fubname
в аргументе backticks, используйте
"${fubname}_early_exit_indicator = 1"
. Обратите внимание, что нам нужны фигурные скобки вокруг идентификатора, поскольку следующее подчеркивание является допустимым символом идентификатора.(Напротив, буквальная точка не является допустимым символом идентификатора, поэтому, если следующий символ был буквальной точкой, вам не нужны скобки вокруг идентификатора.)