Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String Perl:不替换字符串_String_Perl_Replace - Fatal编程技术网

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请注意此答案推荐的可能需要。