FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Pi_01 am 25 April 2020, 10:34:23

Titel: [gelöst] PERL Bedingung - Ergebnis völlig unlogisch
Beitrag von: Pi_01 am 25 April 2020, 10:34:23
Hallo,
meine stateFormat Attribut sieht wie folgt aus:

{return &meineFunktion('Inhalt2');}

Und die Funktion innerhalb von 99_myUtils.pm:

sub meineFunktion{
my $ausgabe = '';

if ($_[0]=='Inhalt1')
{
$ausgabe.= 'ErsteSchleife '.$_[0];
}
elsif ($_[0]=='Inhalt2')
{
$ausgabe.= 'ZweiteSchleife '.$_[0];
}

return $ausgabe;
}


Als Ausgabe erhalte ich komischerweise "ErsteSchleife Inhalt2"
Wie kann das sein??

Erwartet hätte ich:
ZweiteSchleife Inhalt2
Titel: Antw:PERL Bedingung - Ergebnis völlig unlogisch
Beitrag von: herrmannj am 25 April 2020, 10:48:07
Stringvergleich mit eq
Titel: Antw:PERL Bedingung - Ergebnis völlig unlogisch
Beitrag von: Christoph Morrison am 25 April 2020, 11:27:22
Zitat von: Pi_01 am 25 April 2020, 10:34:23

if ($_[0]=='Inhalt1')


Du vergleichst Strings mit einem numerischen Operator. Inhalt1 evaluiert zu 1, Inhalt2 ebenfalls, also ist die erste Bedingung wahr.
Titel: Antw:PERL Bedingung - Ergebnis völlig unlogisch
Beitrag von: Otto123 am 25 April 2020, 11:40:46
Zitat von: Christoph Morrison am 25 April 2020, 11:27:22
Du vergleichst Strings mit einem numerischen Operator. Inhalt1 evaluiert zu 1, Inhalt2 ebenfalls, also ist die erste Bedingung wahr.
Christoph: Bist Du sicher? Ich meine "String" evaluiert (wie Du sagst  ;) ) zu 0 bzw. wenn der String eine führende Ziffer enthält zu dieser:
Test
{"egal">"1"}
{"egal">"0"}
{"egal">"-1"}
{"2egal">"1"}


Gruß Otto
Titel: Antw:PERL Bedingung - Ergebnis völlig unlogisch
Beitrag von: Christoph Morrison am 25 April 2020, 12:36:49
Zitat von: Otto123 am 25 April 2020, 11:40:46
Christoph: Bist Du sicher? Ich meine "String" evaluiert (wie Du sagst  ;) ) zu 0 bzw. wenn der String eine führende Ziffer enthält zu dieser:

Nö, aber ob 0 oder 1, beides ist im numerischen Vergleich jeweils miteinander wahr. Was stört dich an evaluiert?
Titel: Antw:PERL Bedingung - Ergebnis völlig unlogisch
Beitrag von: Otto123 am 25 April 2020, 12:46:10
Die Logik ist klar. Ich hatte für mich nur ermittelt: Ein String ohne Zahl am Anfang wird im numerischen vergleich offenbar zu 0. Ich war mir aber nicht sicher ob das wirklich stimmt, könnte ja auch "nichts" sein oder so was. Ich will es immer genau wissen :)
Nein mich stört "evaluiert" nicht ;) das ist ok. Ich wollte nur ausdrücken: ich habe den Satz von Dir übernommen ;)

Titel: Antw:PERL Bedingung - Ergebnis völlig unlogisch
Beitrag von: Pi_01 am 25 April 2020, 16:40:24
Danke Jungs,
ich komm aus der PHP-Szene, daher der Fehler mit dem Operator ==