FHEM Forum

FHEM => Automatisierung => Perl für FHEM-User => Thema gestartet von: TomLee am 05 Mai 2023, 12:51:13

Titel: FHEM-Syntaxprüfung beim zuordnen von Elementen einer Hashvariablen korrekt ?
Beitrag von: TomLee am 05 Mai 2023, 12:51:13
Nicht wichtig, aber es beschäftigt mich.

Aufgrund der Frage hier (https://forum.fhem.de/index.php?topic=133456.0), frage ich mich ob das richtig ist, das FHEM die Syntax moniert wenn man den Schlüssel ohne die Quotes angibt (-> invalid icon mapping table: Bareword "incoming" not allowed while "strict subs" in use at (eval 1565231) line 1.).

Ich hab bisher mitgenommen/gelesen das man bei Verwendung des =>-Operator diese auch weglassen kann/darf (hier (http://www.mathe2.uni-bayreuth.de/perl/GK/hashes.htm) steht das bspw.).
Titel: Aw: FHEM-Syntaxprüfung beim zuordnen von Elementen einer Hashvariablen korrekt ?
Beitrag von: JoWiemann am 05 Mai 2023, 12:55:43
Hallo,

da es sich bei der Definition von Attributen um eine vom Modul Ersteller vorgegebene Syntax handelt, ist jede Syntax die Richtige und hat nichts mit Fhem im Allgemeinen zu tun.

Grüße Jörg
Titel: Aw: FHEM-Syntaxprüfung beim zuordnen von Elementen einer Hashvariablen korrekt ?
Beitrag von: TomLee am 05 Mai 2023, 12:57:24
Danke.
Titel: Aw: FHEM-Syntaxprüfung beim zuordnen von Elementen einer Hashvariablen korrekt ?
Beitrag von: TomLee am 05 Mai 2023, 18:21:43
Hab mir das jetzt doch genauer angeschaut.

Erkenntnis ist jetzt, mit FHEM-Syntaxprüfung hat das gar nix zu tun und deine Antwort ist doch nicht ganz richtig oder ?

In Zeile 167 wird doch mit ref geprüft ob ein Hash übergeben wurde, das hab ich nachvollzogen und ref hat kein Problem damit wenn der Schlüssel ohne Quotes angegeben wird und gibt auch dann HASH zurück.

Ich hab das erste mal bewusst "Berührung" mit eval. Die Fehlermeldung kommt doch aus Zeile 166, weil dort auf einen Perl-Syntaxfehler geprüft wird (Schlüssel/String ohne Quotes), was aber hier gar kein Fehler wäre bei der Übergabe aus dem Attribut ?

Evt. kann man das mit der Perl-Syntaxfehler-Prüfung ja anders lösen ?

Wenn ich mir hier nur was zusammenspinne ignoriert mich einfach  :P