Perl:转义字符紧邻变量,在双引号内

Perl: escape characters immediately adjacent to variables, inside double quotes

我一直在尝试使用 perl 的函数 rename 来重命名大量文件。我遇到的问题是我的变量 my $oldname 是由变量、字符、变量等行的名称组成的,如 my $oldname = "$variable1CHARACTERS$variable2.txt";

我使用了多种选项来转义字符(单引号、撇号、斜杠和大量组合),但它永远无法正常工作,因此重命名失败。有没有人遇到过这个问题?我认为解决方案是通过更多的双引号,也许将 CHARACTERS 放在双引号下 - 但仍然没有找到有效的语法。任何提示将不胜感激。

与shell一样,您可以使用大括号来分隔变量名。

my $oldname = "${variable1}CHARACTERS${variable2}.txt";

大括号并不是消除歧义所必需的$variable2(句点不允许出现在变量名中,因此它必须在那里结束)但是你可以使用它们只是为了对称。

在你有限的情况下,你也可以将字符串分开,然后加入它们:

my $oldname = join("", $variable1, "CHARACTERS", $variable2, ".txt");