使用掩码字符串在perl中屏蔽字符串

Ree*_*ets 4 regex perl

我有一个像'xxox-x'这样的字符串,我想屏蔽文件中的每一行,如下所示:

  • x被忽略(或只是设置为已知值)
  • o保持不变
  • - 是一个可变长度字段,可以保持其他所有内容不变

因此掩盖'xxox-x'对'deadbeef'会产生'xxaxbeex'

与'deadabbabeef'相同的面具'xxox-x'会产生'xxaxabbabeex'

我怎么能简洁地使用s运算符呢?

eph*_*ent 7

$mask =~ s/-/'o' x (length $str - length $mask)/e;
$str =~ s/(.)/substr($mask, pos $str, 1) eq 'o' ? $1 : 'x'/eg;
Run Code Online (Sandbox Code Playgroud)