FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: viegener am 09 September 2017, 11:44:38

Titel: Verhalten von notify bei Definition mit Semikolons
Beitrag von: viegener am 09 September 2017, 11:44:38
Ich sehe das nicht wirklich als Fehler, trotzdem hat es zumindest cooltux und mich etwas beschäftigt - siehe hier
https://forum.fhem.de/index.php/topic,76391.0.html (https://forum.fhem.de/index.php/topic,76391.0.html)

Folgende Definition eines notifys funktioniert nicht (Alle definitionen im def-editor in FHEMWEB)
testnotify {
my $VAR = "Hugo";
Log3(undef, 1, "Hallo".$VAR);
};


Fehler:
2017.09.09 11:38:35 5: Triggering testnotify
2017.09.09 11:38:35 4: testnotify exec {
my $VAR = "Hugo";
Log3(undef, 1, "Hallo".$VAR);
};
2017.09.09 11:38:35 3: testnotify return value: Unknown command {
my, try help.
Unknown command Log3(undef,, try help.
Unknown command }, try help.


Das Problem ist hier das Semikolon am Ende - denn damit wird der Gesamtausdruck nicht mehr als perl-Kommando erkannt. Das ist auch im Code nachvollziehbar und die Definition ist ja eigentlich inkorrekt (da ein weiteres Kommando folgen sollte)
Man könnte sich hier eine Warnung vorstellen?

Interessanterweise funktioniert aber die Definition mit doppelten Semikolons innerhalb des perl-Ausdrucks ohne Fehlermeldung:

testnotify {
my $VAR = "Hugo";;
Log3(undef, 1, "Hallo".$VAR);;
};


Da habe ich nicht weiter geschaut warum das plötzlich geht und eigentlich ist auch das kein Fehler sondern einfach erstmal überraschend.

@Rudi: Ob Du daran etwas ändern willst, ist wohl Deine Entscheidung.
Titel: Antw:Verhalten von notify bei Definition mit Semikolons
Beitrag von: rudolfkoenig am 09 September 2017, 11:51:01
Erstmal nicht, es sei denn irgendwer liefert einen Patch.

Vmtl. nicht sehr bekannt, dass vor dem eingegebenen/sichtbaren Perl-Ausdruck noch eine Liste an Variablen ($EVENT, $NAME, $EVTPART1, usw) mit my gesetzt wird, das spielt evtl. auch eine Rolle.
Titel: Antw:Verhalten von notify bei Definition mit Semikolons
Beitrag von: betateilchen am 09 September 2017, 12:11:48
Zitat von: viegener am 09 September 2017, 11:44:38
Interessanterweise funktioniert aber die Definition mit doppelten Semikolons innerhalb des perl-Ausdrucks ohne Fehlermeldung:

Um es auf die Spitze zu treiben - das hier funktioniert auch ;)


blub {
my $VAR = "Hugo";;
Log3(undef, 1, "Hallo ".$VAR)
};


Aber ich sehe da auch keinen Handlungsbedarf. Wenn man die Logik der Auflösung solcher Ausdrücke verstanden hat, muss man darüber nicht mehr nachdenken, sondern macht es automatisch richtig.
Titel: Antw:Verhalten von notify bei Definition mit Semikolons
Beitrag von: viegener am 09 September 2017, 12:24:31
@rudi: Verstehe ich und ich halte es auch nicht für einen Fehler.

Das mit den zusätzlichen Variablen war mir schon klar, trotzdem konnte ich nicht sehen warum das mit den doppelten Semikolons geht, denn eigentlich ist es damit ja genausowenig ein perl-befehl, da nicht mit } abgeschlossen wird.

Titel: Antw:Verhalten von notify bei Definition mit Semikolons
Beitrag von: CoolTux am 09 September 2017, 12:25:12
Deswegen haben wir es ja auch nicht als Bug eingestellt sondern eben als Meldung zum kurz drüber nachdenken.
Es ist auch für andere Helfenden interessant worauf man immer so achten muß. Gibt schon komische Konstruktionen.
Erinnere mich da gerade an Sabines Code unter Codeschnipsel wo direkt Hash's abgefragt werden in einer tieferen Ebene. Wo wir doch letztens erst gesehen haben das diese Hash's dann erst angelegt werden wenn sie nicht vorhanden sind.


Grüße
Titel: Antw:Verhalten von notify bei Definition mit Semikolons
Beitrag von: betateilchen am 09 September 2017, 12:35:12
Zitat von: CoolTux am 09 September 2017, 12:25:12
Wo wir doch letztens erst gesehen haben das diese Hash's dann erst angelegt werden wenn sie nicht vorhanden sind.

Das ist aber seit sehr langer Zeit bekannt und Rudi weist auch in schöner Regelmäßigkeit auf diese Tatsache hin...
Titel: Antw:Verhalten von notify bei Definition mit Semikolons
Beitrag von: CoolTux am 09 September 2017, 12:40:00
Zitat von: betateilchen am 09 September 2017, 12:35:12
Das ist aber seit sehr langer Zeit bekannt und Rudi weist auch in schöner Regelmäßigkeit auf diese Tatsache hin...

Ich weiß, das letztens war auch schon bisschen her. Und ich weise auch regelmäßig darauf hin. Habe gestern gesucht wo Rudi das so gut erklärt hat um es in Sabines Thread zu posten, habe es aber nicht mehr gefunden und dann die Lust verloren.  :-[
Aber wir schweifen ab  ;D