FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: epsrw1 am 11 Juni 2014, 11:24:50

Titel: $hash->{READINGS} is not hash? fehlermeldung nach neuem define [gelöst]
Beitrag von: epsrw1 am 11 Juni 2014, 11:24:50
hallo zusammen,
ich verwende folgende zeile im get eines moduls:
my @stmgets = (keys($hash->{READINGS}));
auf meinen eigenen installationen kann ich einen fehler von dem ein anderer user berichtet nicht reproduzieren:
ZitatType of arg 1 to keys must be hash or array (not hash element) at ./FHEM/98_STELLMOTOR.pm line 338, near "})"
ich vermute daß der erste aufruf der GetFn nach dem define läuft, bevor das erste reading vorhanden ist. gibt es fhem-seietig einen workaround in der art wie "get erst nach x sekunden aufrufen" oder muß ich im modul selbst die symptome abfangen?
vielen dank !
florian

http://forum.fhem.de/index.php/topic,23933.msg175800.html#new (http://forum.fhem.de/index.php/topic,23933.msg175800.html#new)

# $Id: 98_STELLMOTOR.pm 2014 2014-06-10 23:09:00Z Florian Duesterwald $
Titel: Antw:$hash->{READINGS} is not hash? fehlermeldung nach neuem define
Beitrag von: betateilchen am 11 Juni 2014, 11:28:25
Zitat von: epsrw1 am 11 Juni 2014, 11:24:50
oder muß ich im modul selbst die symptome abfangen?

sauberes Programmieren ist immer besser als jeder workaround.

Offtopic: das Posten eines kompletten Modules in einem code-Tag ist m.E. ziemlich unsinnig, vor allem, wenn das gleiche Modul dann auch noch als Anhang am Beitrag hängt.
Titel: Antw:$hash->{READINGS} is not hash? fehlermeldung nach neuem define
Beitrag von: herrmannj am 11 Juni 2014, 11:38:00
Hi,

gleicher Fall gerade im non blocking weather thread. witzig

Lösung: user hat "altes" perl. Hash in keys de-refernzieren.

%{$hash->{READINGS}}

vg
jörg
Titel: Antw:$hash->{READINGS} is not hash? fehlermeldung nach neuem define
Beitrag von: epsrw1 am 11 Juni 2014, 11:40:25
Zitatsauberes Programmieren ist immer besser als jeder workaround.

danke beta, darauf zielt auch meine frage ab. ich halte es für unsauber im modul etwas abzufangen was vllt schon anderweitig längst vorgesehen ist. impliziert Dein hinweis daß dem nicht so ist?
oder impliziert er daß die fragliche zeile an sich aus einem anderen mir nicht offensichtlichen grund "unsauber" ist?
Danke :)
florian
Titel: Antw:$hash->{READINGS} is not hash? fehlermeldung nach neuem define [gelöst]
Beitrag von: epsrw1 am 12 Juni 2014, 07:10:21
jörg, vielen dank, das war die lösung :)