Thread XML::Simple - Escaping (5 answers)
Opened by Andre at 2010-08-20 12:08

payx
 2010-08-20 13:57
#140801 #140801
User since
2006-05-04
564 Artikel
BenutzerIn

user image
Hallo Andre,

an print liegt es nicht, sondern eben am Dumper.

In meinem Beispiel klappt allerdings auch die Zuweisung mit den beiden Backslashes nicht:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my $string = '\\w';
print "PRINT vor subst: $string\n";
print Dumper "DUMPER vor subst: ".$string;
print "Length vor subst: " . length($string) . "\n\n";
$string =~ s/(\\)+/\\/g;
print "PRINT nach subst: $string\n";
print Dumper "DUMPER nach subst: ".$string;
print "Length nach subst: " . length($string) . "\n";

__END__

Output:

PRINT vor subst: \w
$VAR1 = 'DUMPER vor subst: \\w';
Length vor subst: 2

PRINT nach subst: \w
$VAR1 = 'DUMPER nach subst: \\w';
Length nach subst: 2

Wenn ich in Zeile 5 nur einen Backslash zuweise, verhält es sich genau gleich.

Wenn ich aber vier Backslashes zuweise my $string = '\\\\w';, dann tut die RegEx was sie soll.

PRINT vor subst: \\w
$VAR1 = 'DUMPER vor subst: \\\\w';
Length vor subst: 3

PRINT nach subst: \w
$VAR1 = 'DUMPER nach subst: \\w';
Length nach subst: 2


Mit anderen Worten, wenn Deine Escape-Sequenzen wirklich doppelt escaped sind, sollte das mit Deiner (oder meiner) RegEx behoben werden.

Grüße
payx

View full thread XML::Simple - Escaping