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

时间:2014-11-01 12:17:55

标签: perl substitution

我有一个愚蠢的问题

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

但它出错了 &#34;不能在s / tt / t / g附近修改字符串;

$_ = "$num_in_eng{$num}teen";
s/tt/t/;

这很好用

1 个答案:

答案 0 :(得分:0)

您无法指定字符串文字。说"foo" = "bar"也没有意义。

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

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

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

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