Hallo.
Habe tip bekommen, ein script zu erstellen, welches mir Werte in definierte Zahlen umschreibt.
Habe jetzt eines geschrieben, das aber nur mit Zahlen richtig klappt, steht ein Buchstabe drinn klappt es nicht mehr. Warum?
sub Ladepreis(){
my $a=ReadingsNum("test_1","state",0);
my $ret="what";
if( $a=="255" ){
fhem("setreading test_1 1a 2");
}elsif ( $a==2 ){
fhem("setreading test_1 1a ?");
}elsif ( $a=="MC_T_450.*" ){
fhem("setreading test_1 1a ?");
}else {
fhem("setreading test_1 1a $ret");
}
}
dieses klappt wenn man nur mit zahlen arbeitet . steht aber im reading COM255 und ich ändere die Zeile mit "if" auf COM255 dann wirft er mit das "else" aus.
was muss man da beachten?
Zeichenketten werden in Perl mit eq verglichen und nicht mit ==
Das findest du aber in jeder Perldoku.
Damian war schneller, aber still:
eq statt == verwenden.
eq vergleicht einen string, == nur Zahlen.
Vielleicht willst du hier aber auch lieber =~ nutzen, um mit einer regex arbeiten zu können?
Siehe zu allem: https://stackoverflow.com/a/1438631
Danke.