Warum funktioniert dieses Perl-script nicht?

Begonnen von Icinger, 18 Februar 2014, 11:07:24

Vorheriges Thema - Nächstes Thema

Icinger

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?
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

betateilchen

{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 }
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Icinger

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
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

betateilchen

nur is mir nicht ganz klar, wo jetzt der Fehler lag.

Weil das Ganze innerhalb geschweifter Klammern anders funktioniert als innerhalb eines prozeduralen Ablaufs.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!