FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Icinger am 18 Februar 2014, 11:07:24

Titel: Warum funktioniert dieses Perl-script nicht?
Beitrag von: Icinger am 18 Februar 2014, 11:07:24
Bitte, wo hab ich da den Fehler drinnen:

{my $dd = Value("EG_SZ_Jalousie") ;; \
                   if ($dd eq "Offen") {printf("aa %d",100)} ;; \
                   if ($dd eq "25%") {printf("wert %d",80)} ;; $dd }


Führe ich dieses Script im Telnet aus, bekomme ich folgendes:
fhem> {my $dd = Value("EG_SZ_Jalousie") ;; \
                   if ($dd eq "Offen") {printf("aa %d",100)} ;; \
                   if ($dd eq "25%") {printf("wert %d",80)} ;; $dd }

Offen


Das "Offen" kommt ja von der $dd-Variable, die ich als letztes ausgebe. Aber warum wird das erste IF nicht ausgeführt?
Titel: Antw:Warum funktioniert dieses Perl-script nicht?
Beitrag von: betateilchen am 18 Februar 2014, 11:31:11
{my $r; my $dd = Value("EG_SZ_Jalousie") ;  if ($dd eq "Offen") {$r = sprintf("aa %d",100)}; if ($dd eq "25%") {$r = sprintf("wert %d",80)}; $r }
Titel: Antw:Warum funktioniert dieses Perl-script nicht?
Beitrag von: Icinger am 18 Februar 2014, 11:51:37
Danke,

nur is mir nicht ganz klar, wo jetzt der Fehler lag. Ich habe die printf eigentlich nur "alibi-mäßig" drinnen zum testen.

Normalerweise hab ich im notify:
{my $dd = Value("EG_SZ_Jalousie") ;;
                   if ($dd eq "Offen") {fhem "set SZ_JalousieTaster 100"} ;;
                   if ($dd eq "25%") {fhem "set SZ_JalousieTaster 80"}  }


und keiner der beiden Befehle wird ausgeführt.

Aber gut, schreib ich den Wert halt in eine Variable und mache am Schluss halt ein fhem "set...." dran
Titel: Antw:Warum funktioniert dieses Perl-script nicht?
Beitrag von: betateilchen am 18 Februar 2014, 11:57:20
nur is mir nicht ganz klar, wo jetzt der Fehler lag.

Weil das Ganze innerhalb geschweifter Klammern anders funktioniert als innerhalb eines prozeduralen Ablaufs.