tinita: (REGEX) Negative Lookbehind bei split()

Beitrag lesen

Leider unterscheidet sich das Ergebnis nicht vom ursprünglichen Split, es werden also weiter alle Unterstriche getrennt. Das Backslash zum Excapen fällt aber weg.

Was mach ich falsch?

Also hier funktioniert das:

use 5.010;  
my @strings = qw/ FOO1_FOO2_FOO3 BAR1_BAR2\_BAR3 /;  
for my $s (@strings) {  
    my @array = split /(?<!\\)[_]+/, $s;  
    say "$s:";  
    say for @array;  
}  

Ausgabe:
FOO1_FOO2_FOO3:
FOO1
FOO2
FOO3
BAR1_BAR2\_BAR3:
BAR1
BAR2\_BAR3

Ich nehme daher einfach an, dass der Backslash gar nicht imOoriginalstring vorhanden ist.
Das passiert, wenn du sowas schreibst:
my $string = "FOO\_BAR";
Wenn der String aber mit Backslash in einer Datei steht, die du ausliest, sollte der Backslash nicht verlorengehen.
Wenn du den String im Skript erstellst, verwende z.b. single quotes:
my $string = 'FOO\_BAR';