如何替换字符串变量中的已知子字符串值

时间:2013-04-29 19:55:54

标签: perl

我有一个如下所示的字符串:

prop_1=val1 prop_2=val2 prop_3=val3 

我想替换其中一个标记的全部内容,以便字符串看起来像:

prop_1=val1 prop_X=valX prop_3=val3

我试过了

$params =~ s/prop_2=val2/prop_X=valX/ig;

但没有任何改变。我做错了什么?

1 个答案:

答案 0 :(得分:2)

你错了。

$params = 'prop_1=val1 prop_2=val2 prop_3=val3';
$params =~ s/prop_2=val2/prop_X=valX/ig;
print "$params\n";

给出

prop_1=val1 prop_X=valX prop_3=val3

你没有证明这个问题。我唯一可以想到的可能导致上述失败的原因是pos($params)不是零,例如你之前在标量上下文中使用过/.../g,如

if ($params =~ /.../g)   # Bad

请注意,s/(?<!\S)prop_2=val(?!\S)/prop_X=valX/ig会更好,因为它与aprop_2=vals不匹配。