In meinen myUtils nutzte ich devspec2array. Wie kann ich überprüfen ob mindestens ein Device enthaltet ist?
Eigentlich sollte es ja mittels
if(devspec2array("murks")){
...
}
nichts passieren, es wird aber trotzdem ausgeführt.
Grüße
igami
Ich habe jetzt gerade keinen fhem code zur hand, aber ich vermute mal stark, dass devspec2array auch dann ein Array zurückliefert, wenn nichts passendes gefunden wird und nichts schlimmes passiert ist (error meldung). Also musst Du vermutlich die Längde des arrays prüfen.
Oder zur Sicherheit erstmal überprüfen ob es ein array ist und dann schauen ob die Länge > 0 ist (scalar)
Mehr infos finden sich auch hier oder in jedem perl buch: http://wiki.selfhtml.org/wiki/Perl/Listen_bzw._Arrays (http://wiki.selfhtml.org/wiki/Perl/Listen_bzw._Arrays)
Wenn ich das richtig in Erinnerung habe, gibt devspec2array einen leeren String zurück, wenn "murks" nicht definiert ist.
devspec2array liefert murks zurueck, wenn sie das nicht sinnvoll aufloesen kann.
Das fuehrt zu den gewohnten Fehlermeldung: "Please define murks first", da die Befehle pruefen, ob die von devspec2array zurueckgegebenen Werte in $defs enthalten sind.
Vielen Dank. Habe es nun folgendermaßen gelöst:
my @array = devspec2array("murks");
if(defined($defs{$array[0]})){
...
}
Grüße
igami