FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: drhirn am 28 Oktober 2015, 17:37:02

Titel: [gelöst] Bareword not allowed while "strict subs" in use
Beitrag von: drhirn am 28 Oktober 2015, 17:37:02
Hallo!

Was hat's eigentlich mit der Fehlermeldung auf sich?

Bareword "opened" not allowed while "strict subs" in use at (eval 263) line 1.

Mein Code sieht so aus. Die letzte Zeile mit dem d2NUC wird kritisiert:


([dMultiMedia] eq "on")
(
  set lsWohnzimmer scene sFernsehen;
  set dTV on;
  set dRXV777 on;
  define atTvOn at +00:00:10 set drcTV KEY_HDMI1;
)
DOELSEIF ([dMultiMedia] eq "off")
(
  set lsWohnzimmer scene sStandard;
  set dTV off;
  set dRXV777 off;
  IF ([d2NUC] eq "opened")(set d2NUC shutdown;;set wolNUC off);
)


Danke
Stefan
Titel: Antw:Bareword not allowed while "strict subs" in use
Beitrag von: viegener am 28 Oktober 2015, 18:50:44
Ich denke das Problem beginnt damit, dass "IF" kein FHEM-Befehl (und IF wäre jetzt auch kein Perl-statement) ist. Eigentlich möchtest Du aber perl code hier ausführen möchtest.

aus der DOIF-Doku:

Perlbefehle müssen zusätzlich in geschweifte Klammern gesetzt werden: ... ({system ("wmail Peter is at home")})
Titel: Antw:Bareword not allowed while "strict subs" in use
Beitrag von: betateilchen am 28 Oktober 2015, 18:52:51
Zitat von: viegener am 28 Oktober 2015, 18:50:44
Ich denke das Problem beginnt damit, dass "IF" kein FHEM-Befehl ... ist

seit wann nicht mehr?

http://fhem.de/commandref.html#IF
Titel: Antw:Bareword not allowed while "strict subs" in use
Beitrag von: Dietmar63 am 28 Oktober 2015, 18:57:02
 ::) das muss sich der IF Entwickler ansehen
Titel: Antw:Bareword not allowed while "strict subs" in use
Beitrag von: viegener am 28 Oktober 2015, 20:03:24
Zitat von: betateilchen am 28 Oktober 2015, 18:52:51
seit wann nicht mehr?

http://fhem.de/commandref.html#IF

Oops, das habe ich offensichtlich immer überlesen. Meine Augen und mein Gedächtnis werden wohl auch nicht besser.

Sorry ???
Titel: Antw:Bareword not allowed while "strict subs" in use
Beitrag von: igami am 29 Oktober 2015, 06:25:57
Zitat von: http://fhem.de/commandref_DE.html#DOIF
Sollen mehrere FHEM-Befehle ausgeführt werden, so werden sie mit Komma statt mit Semikolon angegeben ... (set lamp1 on, set lamp2 off)

Falls ein Komma nicht als Trennzeichen zwischen FHEM-Befehlen gelten soll, so muss der FHEM-Ausdruck zusätzlich in runde Klammern gesetzt werden: ...((set lamp1,lamp2 on),set switch on)

([dMultiMedia] eq "on")
(
  set lsWohnzimmer scene sFernsehen,
  set dTV on,
  set dRXV777 on,
  define atTvOn at +00:00:10 set drcTV KEY_HDMI1
)
DOELSEIF ([dMultiMedia] eq "off")
(
  set lsWohnzimmer scene sStandard,
  set dTV off,
  set dRXV777 off,
  (IF ([d2NUC] eq "opened")(set d2NUC shutdown,set wolNUC off))
)

Zumindest verstehe ich es so.
Titel: Antw:Bareword not allowed while "strict subs" in use
Beitrag von: drhirn am 29 Oktober 2015, 09:52:17
Die Sache mit dem Beistrich ist doch tatsächlich die Lösung! Da wurde ich wohl Opfer des Unterschieds zwischen der englischen und der deutschen Commandref. Und der Tatsache, dass bis auf das IF - trotz Strichpunkt - alles funktioniert hat ;)

Danke igami!