0

perl で以下を使用しようとしていますが、機能していないようです。文字列文字を補間せずに正確な sring を一致させるにはどうすればよいですか? 引用符と\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 に答える