为变量赋值使用regexp修改的另一个变量的结果

Zag*_*rax 2 regex perl

可能重复:
如何在保留原始字符串的同时对字符串执行Perl替换?
Perl:使用s /(replace)并返回新字符串

如果您找到更好的方式来描述它,请随意修改此问题的标题.

想象一下,我们有:

   my $foo = something;
   my $newfoo = $foo =~ s/.*/something else/;
Run Code Online (Sandbox Code Playgroud)

我以为我会有$newfoo = something else,而我发现它等于1.我想这个1就是说'匹配和替换成功'.

我发现的唯一解决方案是后续的:

  my $foo = something;
  my $newfoo = $foo;
  $newfoo =~ s/.*/something else/;
Run Code Online (Sandbox Code Playgroud)

有没有办法完成相同的任务,即创建一个新的变量与正则表达式的结果而不修改第一个变量,没有中间步骤?

Sea*_*ght 5

如果你使用perl 5.14或更高版本,这将有效.它被称为非破坏性替代.否则你将不得不坚持临时任务:

my $newfoo = $foo =~ s/.*/something else/r;
                                         ^ Add this
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用的是perl 5.14或更高版本,请认为自己很幸运. (4认同)