0

我正在尝试在 perl 中使用以下内容,但它似乎不起作用。如何在不插入任何字符串字符的情况下匹配确切的字符串?我尝试了引号和 \Q,\E 但没有任何效果

$string=~ s/\`date +%s\`/anotherthinghere/;

为清楚起见,我要匹配的字符串是

`date +%s`

哦,忘了说date +%s是在变量中。

4

2 回答 2

3

您一定误用了\Q..\E说明符,因为这正是您想要的

我认为,从你所说的,你有`date +%s`,并且反引号已经被降价吃掉了

在这种情况下,此代码将执行您想要的操作。变量插值完成,然后再解释特殊字符。

use strict;
use warnings;

my $string = 'xxx `date +%s` yyy';

my $pattern = '`date +%s`';

$string =~ s/\Q$pattern/anotherthinghere/;

print $string;

输出

xxx anotherthinghere yyy
于 2012-09-16T19:11:47.530 回答
2

如果我很好理解你的问题,那么:

my $var = q/`date +%s`/;
my $string = q/foo `date +%s` bar/;
$string =~ s/\Q$var/another/;
say $string;

输出:

foo another bar
于 2012-09-16T10:35:51.890 回答