Probleme mit mehreren perl's in ReplaceSetMagic (für Set- Befehle) - fhem.pl?

Begonnen von viegener, 23 April 2016, 15:24:55

Vorheriges Thema - Nächstes Thema

viegener

Es hat wohl in den letzten Wochen eine Änderung in ReplaceSetMagic - fhem.pl gegeben, die ich zwar verstehe aber die wohl auch Probleme auslöst.

Beispiel hier: https://forum.fhem.de/index.php/topic,38328.msg443007.html#msg443007

Es geht um die Ersetzung von Perl-Ausdrücken in set-Befehlen, dabei wird jetzt folgender Regexp angewendet:

  $a =~ s/{\((.*)\)}/AnalyzePerlCommand($hash->{CL},$1,1)/egs;
Das 's' in 'egs' am Ende ist hinzugekommen, vermutlich damit auch Perl-Ausdrücke über mehrere Zeilen erfasst werden.

Allerdings gibt es dann ein Problem mit mehreren Perl-Ausdrücken in einem Set, da die Erkennung "greedy" ist und das '.*' am Anfang soviel wie möglich zusammenfasst auch unter Umständen über mehrere Expressions hinweg. Damit führt so etwas wie:

set aDevice aCommand {(ReadingsVal("dev","r1",0))} {(ReadingsVal("dev","r2",0))} zu Fehlern.

Vorschlag den .* einfach non-greedy (mit Fragezeichen am Ende) machen:

  $a =~ s/{\((.*?)\)}/AnalyzePerlCommand($hash->{CL},$1,1)/egs;

Aus meiner Sicht sollte das auch keine negativen Seiteneffekte haben.

@Rudi: Ich habe jetzt mal keine Patch für das eine Zeichen erstellt, ich bitte um Nachsicht  ;)
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

rudolfkoenig

Danke fuer den Hinweis, habs eingecheckt.
Und ausnahmsweise Nachsicht gewaehrt. :)