Hallo Zusammen,
ich würde gerne aus einem Reading (wind_dir), in dem die Windrichtung in Form "123 ABC" (z.B. "313 NW") steht, die Haupthimmelsrichtung in einem Userreading abspeichern. Dazu habe ich ein userReading mit
wind_dir_main:wind_dir {my $wdm=ReadingsVal("TFA_WIND_22","wind_dir","-"); $wdm =~ /(\D\S+\b)/ ; }
konstruiert. Aber irgendwie funktioniert das mit dem Regexp nicht. Im userReading steht immer nur eine Zahl.
Sieht hier vielleicht jemand, woran es hängt.
Danke und Gruß
Christoph
du musst mit return noch zurückgeben was du im reading stehen haben willst. also bei dir z.b. return $1;
wenn du nicht explizit etwas zurück gibst ist die rückgabe der der 'wert' des letzten ausdrucks. und das ist in deinem fall die anzahl der gefunden matches oder sogar einfach nur true.
gruss
andre
Warum so kompliziert? Hat das einen Grund? /[A-Z]+/;
return $&;
ich hab mich schon gewundert was du meinst :)
wenn es um die länge geht warum nicht gleich /\w+/? noch ein zeichen gespart.
oder im list kontext gleich das element zurück geben. das spart noch ein paar zeichen:wind_dir_main:wind_dir {(ReadingsVal($name,"wind_dir","-")=~/\w+/)[0]}
Naja, ich hatte da noch mit den Regexp exerimentiert. Aber mit euren Hinweisen, tut es jetzt das, was es soll.
1000 Dank!