String Perl:不替换字符串
如果我用这样简单的东西替换另一个字符串String Perl:不替换字符串,string,perl,replace,String,Perl,Replace,如果我用这样简单的东西替换另一个字符串 my $pet = "I have a dog."; my $search = "dog"; my $replace = "cat"; $pet =~ s/$search/$replace/; 它工作得很好,我得到了“我有一只猫。”正如预期的那样 但当我使用更复杂的东西时,如以下所示,它不会被替换: my $image_correction_hash = {}; $device = "my_device"; $correction_hash->{
my $pet = "I have a dog.";
my $search = "dog";
my $replace = "cat";
$pet =~ s/$search/$replace/;
它工作得很好,我得到了“我有一只猫。”正如预期的那样
但当我使用更复杂的东西时,如以下所示,它不会被替换:
my $image_correction_hash = {};
$device = "my_device";
$correction_hash->{$device}->{'to_be_replaced'} = "174_4492_232313_7078721ec0.jpg";
# my json string
my $json = '[{"credits":[],"issue":174,"layout":"special_cover","text":[],"hide_overline":"","category":"Kunst","id":"174_4492","media_data":[{"thumbnail":"","data_is_cover":1,"subheadline":"","value":"174_4492.jpg","type":"image","headline":""},{"data_position":"left","thumbnail":"","subheadline":"","value":"174_4492_232302_3980b3da34.jpg","data_effect":"smear","type":"image","headline":""},{"data_position":"right","thumbnail":"","subheadline":"","value":"174_4492_232313_7078721ec0.jpg","data_effect":"smear","type":"image","headline":""}],"links":[],"textmarker":"","teaser":"","hide_headline":"","article_thumbnail":"174_4492_article_thumbnail.jpg","subheadline":"","gallery":[],"overline":"","headline":"Covertitel\n"}]';
print STDERR "JSON string before:" . $json . "\n";
foreach my $search ( keys %{$correction_hash->{$device}})
{
print STDERR "to be replaced:".$correction_hash->{$device}->{$search}.".\n";
# the replacement
$json =~ s/$search/XXXXX/g;
}
print STDERR "JSON string after:" . $json . "\n"; # no replacement occured - GRRR
这里的错误在哪里?您试图在模式替换中使用
$search
,而不是要替换的实际模式。因此,您试图用XXXXXXXX
替换以替换。不174_4492_232313_7078721ec0.jpg
您可能需要添加:
$replace_pattern = $correction_hash->{$device}->{$search};
$json =~ s/$replace_pattern/XXXXX/g;
您试图在模式替换中使用$search
,而不是要替换的实际模式。因此,您试图用XXXXXXXX
替换以替换。不174_4492_232313_7078721ec0.jpg
您可能需要添加:
$replace_pattern = $correction_hash->{$device}->{$search};
$json =~ s/$replace_pattern/XXXXX/g;
您试图在模式替换中使用$search
,而不是要替换的实际模式。因此,您试图用XXXXXXXX
替换以替换。不174_4492_232313_7078721ec0.jpg
您可能需要添加:
$replace_pattern = $correction_hash->{$device}->{$search};
$json =~ s/$replace_pattern/XXXXX/g;
您试图在模式替换中使用$search
,而不是要替换的实际模式。因此,您试图用XXXXXXXX
替换以替换。不174_4492_232313_7078721ec0.jpg
您可能需要添加:
$replace_pattern = $correction_hash->{$device}->{$search};
$json =~ s/$replace_pattern/XXXXX/g;
你混淆了你的变量
试试这个:
print STDERR "to be replaced:".$search.".\n";
它将打印以下内容:待替换:待替换。
因此,您可以使用以下代码:
my $pattern = $correction_hash->{$device}->{$search};
$json =~ s/$pattern/XXXXX/g;
$json =~ s/\Q$pattern\E/XXXXX/g;
另一方面,如果您的$pattern
不是正则表达式,则应使用以下代码对其进行转义:
my $pattern = $correction_hash->{$device}->{$search};
$json =~ s/$pattern/XXXXX/g;
$json =~ s/\Q$pattern\E/XXXXX/g;
你混淆了你的变量
试试这个:
print STDERR "to be replaced:".$search.".\n";
它将打印以下内容:待替换:待替换。
因此,您可以使用以下代码:
my $pattern = $correction_hash->{$device}->{$search};
$json =~ s/$pattern/XXXXX/g;
$json =~ s/\Q$pattern\E/XXXXX/g;
另一方面,如果您的$pattern
不是正则表达式,则应使用以下代码对其进行转义:
my $pattern = $correction_hash->{$device}->{$search};
$json =~ s/$pattern/XXXXX/g;
$json =~ s/\Q$pattern\E/XXXXX/g;
你混淆了你的变量
试试这个:
print STDERR "to be replaced:".$search.".\n";
它将打印以下内容:待替换:待替换。
因此,您可以使用以下代码:
my $pattern = $correction_hash->{$device}->{$search};
$json =~ s/$pattern/XXXXX/g;
$json =~ s/\Q$pattern\E/XXXXX/g;
另一方面,如果您的$pattern
不是正则表达式,则应使用以下代码对其进行转义:
my $pattern = $correction_hash->{$device}->{$search};
$json =~ s/$pattern/XXXXX/g;
$json =~ s/\Q$pattern\E/XXXXX/g;
你混淆了你的变量
试试这个:
print STDERR "to be replaced:".$search.".\n";
它将打印以下内容:待替换:待替换。
因此,您可以使用以下代码:
my $pattern = $correction_hash->{$device}->{$search};
$json =~ s/$pattern/XXXXX/g;
$json =~ s/\Q$pattern\E/XXXXX/g;
另一方面,如果您的$pattern
不是正则表达式,则应使用以下代码对其进行转义:
my $pattern = $correction_hash->{$device}->{$search};
$json =~ s/$pattern/XXXXX/g;
$json =~ s/\Q$pattern\E/XXXXX/g;
第二双眼睛经常会发现你看不见的东西。绝对正确-现在已经很晚了,所以我再也没有完美的智慧了。第二双眼睛经常会发现你看不见的东西。绝对正确-现在已经很晚了,所以我再也没有完美的智慧了一双眼睛经常会发现你看不见的东西。绝对正确-现在已经很晚了,所以我不再有完美的智慧。第二双眼睛经常会发现你看不见的东西。绝对正确-现在已经很晚了,所以我没有完美的智慧anymore@Thariama请注意可能需要此答案推荐的。@Thariama请注意此答案推荐的可能需要。@Thariama请注意此答案推荐的可能需要。@Thariama请注意此答案推荐的可能需要。