Ich benötige mal Hilfe. Ich habe ein längeres Ergebnis aus einem Signalduino-Event, das in etwa so aussieht
MU;P0=-15056;P1=297;P2=-385;P3=168;P4=-726;P6=608;CP=1;R=242;D=3432643432143014141412641414126414126410141414126414141264141264101414141264141412641412641014141412641414126414126410141414126414141264141264101414141264141412641412641014141412641414126414126410141414126414141264141264101414141264;p;i
Das möchte ich gern in einem Logfile speichern, um es später auszuwerten. Dazu müssen die Semikola/ons verschwinden. Das gelingt mir, Gleichzeitig möchte ich den Rattenschwanz "D=1234..." entfernen. Das gelingt mir nicht, vielmehr entsteht
|M|U|||P|0|=|-|1|5|0|5|6|||P|1|=|2|9|7|||P|2|=|-|3|8|5|||P|3|=|1|6|8|||P|4|=|-|7|2|6|||P|6|=|6|0|8|||C|P|=|1|||R|=|2|4|2|||D|=|3|4|3|2|6|4|3|4|3|2|1|4|3|0|1|4|1|4|1|4|1|2|6|4|1|4|1|4|1|2|6|4|1|4|1|2|6|4|1|0|1|4|1|4|1|4|1|2|6|4|1|4|1|4|1|2|6|4|1|4|1|2|6|4|1|0|1|4|1|4|1|4|1|2|6|4|1|4|1|4|1|2|6|4|1|4|1|2|6|4|1|0|1|4|1|4|1|4|1|2|6|4|1|4|1|4|1|2|6|4|1|4|1|2|6|4|1|0|1|4|1|4|1|4|1|2|6|4|1|4|1|4|1|2|6|4|1|4|1|2|6|4|1|0|1|4|1|4|1|4|1|2|6|4|1|4|1|4|1|2|6|4|1|4|1|2|6|4|1|0|1|4|1|4|1|4|1|2|6|4|1|4|1|4|1|2|6|4|1|4|1|2|6|4|1|0|1|4|1|4|1|4|1|2|6|4|1|4|1|4|1|2|6|4|1|4|1|2|6|4|1|0|1|4|1|4|1|4|1|2|6|4|||p|||i|||
In meiner 99_myUtils lautet der Befehl
sub SemikolonWeg($) {
my $Wert = $_[0];
$Wert =~ s/;/|/g;
$Wert =~ s/|D=[0..9]+|/|/;
return $Wert;
}
und hier muss ein Fehler sein, den ich nicht sehe. Hat da jemand einen Tipp?
Dein Problem dürfte sein, das | in der Regex ein "Spezielles Zeichen ist.
Mach es deshalb doch umgekehrt. Erst das D= entfernen und dann ....
Na dann mache ich das anders und nehme als Trennzeichen einfach - statt |. Aber ich hatte geschaut und nicht gesehen, dass das ein Sonderzeichen war. Ich probiere mal, danke.
oder sonderzeichen in der regex mit backslash escapen: "\|"
Klappt, danke.
Wobei generell:
Ich würde zuerst immer versuchen, die Eingabe zu kürzen und dann erst Änderungen. Insofern ist das Wegschneiden zuerst und dann das Vertauschen in der Reihenfolge besser.
Hintergrund:
Je kürzer die Eingabe, desto schneller kann sie verarbeitet werden.
In diesem Falle, von der Länge her, nicht so relevant, man sollte sich nur so einen Programmierstiel angewöhnen ....