Regex Perl正则表达式搜索并替换为$variable->;函数(“args”)

Regex Perl正则表达式搜索并替换为$variable->;函数(“args”),regex,string,perl,Regex,String,Perl,基本上,我尝试用从对象的函数调用返回的任何内容来替换。但是我需要一个来自正则表达式搜索的返回值作为参数。这有点棘手,但代码本身应该说明问题: while ( $token =~ s/\$P\(([a-z0-9A-Z_]+)\)/$db->getValue("params", qw($1))/e ) { } 我得到的错误是$1没有被计算成任何值(参数字面上变成了“$1”),所以它搞乱了我的getValue()方法 干杯函数引用“单词”。也就是说,它在所有空白字符处拆分字符串并返回该列表。它

基本上,我尝试用从对象的函数调用返回的任何内容来替换。但是我需要一个来自正则表达式搜索的返回值作为参数。这有点棘手,但代码本身应该说明问题:

while ( $token =~ s/\$P\(([a-z0-9A-Z_]+)\)/$db->getValue("params", qw($1))/e ) { }
我得到的错误是$1没有被计算成任何值(参数字面上变成了“$1”),所以它搞乱了我的getValue()方法

干杯

函数引用“单词”。也就是说,它在所有空白字符处拆分字符串并返回该列表。它不插值

您只需使用变量“原样”:

qw()
函数与

  • q(abc)
    'abc'
  • qq(abc)
    “abc”
    ),以及
  • qx(abc)
    `abc`
    )或
  • qr(abc)
    m/abc/
    ):
qw(abc)
('a','b','c')
函数引用“单词”。也就是说,它在所有空白字符处拆分字符串并返回该列表。它不插值

您只需使用变量“原样”:

qw()
函数与

  • q(abc)
    'abc'
  • qq(abc)
    “abc”
    ),以及
  • qx(abc)
    `abc`
    )或
  • qr(abc)
    m/abc/
    ):

qw(abc)
('a','b','c')

没错,我不正确地使用了qw()函数。原来我不需要它。谢谢兄弟。你说得对,我不正确地使用了qw()函数。原来我不需要它。谢谢兄弟。
s/\$P\(([a-z0-9A-Z_]+)\)/$db->getValue("params", $1)/e