Perl: экранирование символов, непосредственно примыкающих к переменным, в двойных кавычках
Я пытался использовать функцию Perl rename
для того, чтобы переименовать большое количество файлов. Проблема, с которой я столкнулся, заключается в том, что моя переменная my $oldname
состоит из имени вдоль строк переменной, символов, переменной, как в my $oldname = "$variable1CHARACTERS$variable2.txt";
Я использовал множество опций для экранирования символов (одинарные кавычки, апостроф, косая черта и множество комбинаций), но он никогда не работает должным образом, поэтому переименование не выполняется. Кто-нибудь когда-нибудь сталкивался с этой проблемой? Я думаю, что решение заключается в более двойных кавычках, возможно, поместите CHARACTERS в двойные кавычки - но все еще не нашли синтаксис, который работает. Любые советы будут с благодарностью.
1 ответ
Как и в оболочке, вы можете использовать фигурные скобки для разделения имени переменной.
my $oldname = "${variable1}CHARACTERS${variable2}.txt";
Скобки не являются строго необходимыми для устранения неоднозначности $variable2
здесь (точка не допускается в имени переменной, поэтому она должна заканчиваться там), но вы можете использовать их только для симметрии.
В вашем ограниченном сценарии вы также можете хранить отдельные строки и присоединяться к ним:
my $oldname = join("", $variable1, "CHARACTERS", $variable2, ".txt");