[Gelöst] Anfängerfrage zu if(defined xyz)

Begonnen von hollyghost, 22 September 2014, 18:54:32

Vorheriges Thema - Nächstes Thema

hollyghost

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 ,
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

krikan

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'}

hollyghost

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