在下面的脚本中,我使用存储在变量中的替换模式。 我似乎无法在最终结果中得到一个反斜杠。我得到一两个。 它与eval语句有关 任何人都可以告诉我这方面的见解。
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 \\|'
];
答案 0 :(得分:5)
Data Dumper以Perl可以解析的方式显示输出。单引号中的两个反斜杠实际上意味着一个反斜杠:
print '\\'; # Output: \
供参考,perlop
单引号的文字字符串。反斜杠代表一个 除非后跟分隔符或另一个反斜杠,否则反斜杠 在哪种情况下插入分隔符或反斜杠。