我有一个愚蠢的问题
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/;
这很好用
答案 0 :(得分:0)
您无法指定字符串文字。说"foo" = "bar"
也没有意义。
如果您尝试将匹配运算符=~
与替换一起使用(例如,以s
开头的正则表达式术语,如s/foo/bar/
),则替换的结果将是分配到左侧。如果这是文字,您将收到此错误。
您实际使用字符串插值来创建文字并不重要。
使用局部变量并替换其内容,就像您已经展示了正确的解决方案一样。您还可以使用命名变量而不是“默认”$_
:
$foo = whatever();
$foo =~ s/tt/t/;
return $foo;