В приведенном ниже скрипте я использую шаблон замены, который хранится в переменной. Я, кажется, не могу получить обратную косую черту в своем конечном результате. У меня нет ни одного, ни другого. Это как-то связано с утверждением eval Может ли кто-нибудь дать мне представление об этом, пожалуйста.perl regex: как избежать символа обратной косой черты
test.pl:
use Data::Dumper;
@arr = ("a", "b", "c");
$re = '$1 \|';
@arr = map { $_ =~ s/($_)/eval qq{"$re"}/e && $_ } @arr;
print Dumper(\@arr);
@arr = ("a", "b", "c");
$re = '$1 \\|';
@arr = map { $_ =~ s/($_)/eval qq{"$re"}/e && $_ } @arr;
print Dumper(\@arr);
@arr = ("a", "b", "c");
$re = '$1 \\\|';
@arr = map { $_ =~ s/($_)/eval qq{"$re"}/e && $_ } @arr;
print Dumper(\@arr);
$ test.pl
$VAR1 = [
'a |',
'b |',
'c |'
];
$VAR1 = [
'a |',
'b |',
'c |'
];
$VAR1 = [
'a \\|',
'b \\|',
'c \\|'
];
Действительно. Большое спасибо. – user3289872