【发布时间】:2018-04-25 12:28:19
【问题描述】:
我想替换用“#”标记并以点或非字母数字字符结尾的变量。 示例:变量#name 应替换为“Peter”
abc#name.def => abcPeterdef abc#namedef => abc#namedef abc#name-def => abcPeter-def因此,如果变量以点结尾,则会将其替换并删除点。它是否被任何非字母字符终止,它也被替换。
我使用以下:
s/#name\./Peter/i
s/#name(\W)/Peter$1/i
这可行,但是否可以将其合并到一个表达式中?
【问题讨论】:
-
如果你真的在做 Perl 变量替换,那么你可能想看看
String::Interpolate,它使 perl 自己的运行时双引号字符串插值代码可用。这样您就可以使用$s = 'abc$name-def'或$s = 'abc${name}def',然后在设置$name = 'Peter'后进行插值。