FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: hollyghost am 22 September 2014, 18:54:32

Titel: [Gelöst] Anfängerfrage zu if(defined xyz)
Beitrag von: hollyghost am 22 September 2014, 18:54:32
Ich weiß, dass das 'if defined' schon ab und an behandelt wurde so z.B. hier http://forum.fhem.de/index.php?topic=13689.0 (http://forum.fhem.de/index.php?topic=13689.0) ,
aber irgendwie komme ich mit der Lösung nicht zurecht.

Mich stören die Meldungen im Log, dass ich meinen Timer erst definieren soll, bevor ich ihn lösche.

2014.09.22 18:11:53 3: delete gwc_reTriggerTimer : Please define gwc_reTriggerTimer first

Deshalb habe ich versucht mit

if(defined gwc_reTriggerTimer)

auf das ,vorhanden sein' des Timers zu prüfen, bevor ich ihn dann mit

fhem "delete gwc_reTriggerTimer"

lösche.
Im Ganzen sieht das dann so aus

if(defined gwc_reTriggerTimer) {fhem "delete gwc_reTriggerTimer"};;\

Leider läuft das nicht wie erwartet und ich bekomme folgende Meldung im Log:

2014.09.22 18:36:36 3: gwc_UpOff return value: Bareword "gwc_reTriggerTimer" not allowed while "strict subs" in use at (eval 8616) line 2, <GEN24210> line 4.

Der Versuch mit

if(defined "gwc_reTriggerTimer")

wie im oben aufgeführten Link angegeben läuft leider auch nicht – ein String in " " ist vermutlich immer 'definiert', so dass das if immer ausgeführt wird.

Wenn mir jemand sagen könnte, wo ich hier auf dem Schlauch stehe, würde mir das sehr helfen.
Merci schon mal.
Holger
Titel: Antw:Anfängerfrage zu if(defined xyz)
Beitrag von: krikan am 22 September 2014, 19:02:47
Schau Dir mal diese Threads an: http://forum.fhem.de/index.php/topic,27011.0.html und http://forum.fhem.de/index.php/topic,27084.0.html
Dort ist es unter anderem von Andre (justme1968) näher auseinandergepflückt. Das von Dir verlinkte Beispiel von betateilchen hatte mich damals auch in die Irre geführt.
Stichwort: $defs{'objekt'}
Titel: Antw:Anfängerfrage zu if(defined xyz)
Beitrag von: hollyghost am 22 September 2014, 21:40:38
Hallo krikan,
danke für den 'Schupser' - wobei ich sagen muss, der entscheidende Hinweis kam von Dir:
ZitatStichwort: $defs{'objekt'}
Für alle die es interessiert:
if(defined $defs{gwc_reTriggerTimer}) {fhem "delete gwc_reTriggerTimer"};;\
damit läuft's nun.

Grüße
Holger