Perl变量在字符串中插值,同时替换

Perl变量在字符串中插值,同时替换,perl,substitution,Perl,Substitution,我有一个愚蠢的问题 given($num){ ... when($num >= 13 and $num <= 99) return "$num_in_eng{$num}teen" =~ s/tt/t/; ... } 这项工作很好您不能分配给字符串文字。说“foo”=“bar”也没有意义 如果尝试将匹配运算符=~与替换一起使用(例如,以s开头的正则表达式项,如s/foo/bar/),则替换结果将分配到左侧。如果这是一个文本,您将得到这个错误 实际上使用字符串插值来创建文本并不重要 使

我有一个愚蠢的问题

given($num){
...
when($num >= 13 and $num <= 99) return "$num_in_eng{$num}teen" =~ s/tt/t/;
...
}

这项工作很好

您不能分配给字符串文字。说“foo”=“bar”也没有意义

如果尝试将匹配运算符
=~
与替换一起使用(例如,以
s
开头的正则表达式项,如
s/foo/bar/
),则替换结果将分配到左侧。如果这是一个文本,您将得到这个错误

实际上使用字符串插值来创建文本并不重要

使用局部变量并替换其内容,就像您已经展示了正确的解决方案一样。您还可以使用命名变量,而不是“default”
$\uu

$foo = whatever();
$foo =~ s/tt/t/;
return $foo;

我使用了它,但没有解释“不允许您分配到指定的项或尝试更改它,例如使用自动递增”您可以对变量执行
s///
,而不是简单的字符串
s///r
可能是另一回事。@mpapec,非常感谢你hmpapec:你真的应该用
/r
修饰符发布一个答案,因为它没有被广泛使用
$foo = whatever();
$foo =~ s/tt/t/;
return $foo;