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");
Другие вопросы по тегам