[gelöst] Bareword not allowed while "strict subs" in use

Begonnen von drhirn, 28 Oktober 2015, 17:37:02

Vorheriges Thema - Nächstes Thema

drhirn

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

viegener

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")})
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Dietmar63

Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

viegener

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 ???
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

igami

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.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

drhirn

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!