Hilfe bei Bedingung in Userreading

Begonnen von Superposchi, 30 Mai 2025, 04:22:11

Vorheriges Thema - Nächstes Thema

Superposchi

Ich erstelle mir für meine Fahrpläne ein list-Reading mit den vom Module ausgegebenen Einzelreadings.
Leider kommt es bei uns auf dem Land aber immer wieder vor, dass eine Haltestelle länger als 24 Stunden nicht angefahren wird. Dann ist das Reading list mit Bindestrichen gefüllt.
Offenbar erzeugt das aber in FTUI3 einen Fehler, weshalb ich jetzt gerne in dem userreading welches das list-Reading erzeugt eine if-Bedingung mit einbauen würde.

list { my $string = "["."[\"".ReadingsVal($name,"departure_0_number","-")."\",\"".ReadingsVal($name,"departure_0_text","-")."\",\"".ReadingsVal($name,"departure_0_timeInMinutes","-")."\"]".","
."[\"".ReadingsVal($name,"departure_1_number","-")."\",\"".ReadingsVal($name,"departure_1_text","-")."\",\"".ReadingsVal($name,"departure_1_timeInMinutes","-")."\"]"; $string =~ s/Hbf/Aachen Hbf/g; $string =~ s/Bf/Heinsberg Bf/g; my $test = ReadingsVal($name,"departure_0_number","-"); return "[[\"\",\"Keine Abfahrten zur Zeit\",\"\"]]"; return $string },

Ich würde gerne je nachdem was $test für einen Inhalt hat entweder den ersten oder den zeiten return zurückgeben.
Habe schon stundenlang im Netz gesucht, auch ein Perl Grundlagenbuch hat mich nicht weitergebracht.

Kann mir jemand einen Tip geben bitte.

KölnSolar

if ($string eq "Dein Problemstring") {return1}
else {return2}

oder hab ich Dich missverstanden ?

Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Superposchi

#2
Grundsätzlich muss das passen. Nur das "Mein Problemstring ja ursprünglich aus einem Reading kommt, somit immer wieder anders ist oder halt leer.
Ich müsste es also auf Leer überprüfen.

Geht das mit <>""?

Habs schon hingekriegt indem ich dem %test einen fixen Alternativtext im readingsval zuweise.

Gibt es eine Möglichkeit das stateFormat ebenfalls abhängig des Readingsinhaltes unterschiedlich zu machen?

Prof. Dr. Peter Henning

Zitat von: Superposchi am 30 Mai 2025, 10:08:28Ich müsste es also auf Leer überprüfen.
Ich glaube kein Wort von "stundenlanger Suche", und den Titel des "Perl-Grundlagenbuches" wüsste ich doch gerne. Aber das Thema hatten wir ja schon mehrfach.

Wenn man bei Google eingibt "perl test empty string", kommen rund 100 Treffer. Und gleich der erste beinhaltet die richtige Antwort.

pah

Guybrush

das einfachste von vielen möglichkeiten ist

if ($var ne '') {}
(oder eq wenns gleich sein soll...)

das steht vermutlich in jedem Anfängerbuch auf den ersten paar Seiten...

betateilchen

Wenn ich mir einige Beiträge der letzten zwei Tage hier im Forum anschaue, frage ich mich, ob wir uns schon wieder rund um Vollmond befinden...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!