Hauptmenü

split geht nicht :(

Begonnen von RedStar73, 28 Februar 2015, 21:16:48

Vorheriges Thema - Nächstes Thema

RedStar73

hi,
was stimmt mit diesem splitBefehl nicht, es kommt immer die meldung Global symbol requires explicit package name , habe es auch mit @@temp1 probiert, nix,
ohne split geht es.

define heizungaenderung notify SZThermostat { \
my $temp=(ReadingsVal("SZThermostat","desired-temp","99"));;\
my @temp1=split(/\./,$temp);;\
if ( Value("Handy")  eq "present") {{{bueroheizung}};;{fhem("set MyTTSsz tts die gewünschte Temperatur beträgt $temp1[0]")} } }



danke im voraus für die hilfe

betateilchen

Was willst Du eigentlich machen? Nur die Nachkommstelle abschneiden?

Dazu braucht es doch kein split.

my $temp = int(ReadingsVal("SZThermostat","desired-temp","99"))

oder doch besser auf keine Nachkommstellen runden?

my $temp = round(ReadingsVal("SZThermostat","desired-temp","99"),0)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

RedStar73

#2
danke für die schnelle antwort,wollte splitten, weil im tts Engine, höre ich z.b 22 pause 5,ich wollte splitten, dann erstmal die erste hälfte dann schreibe ich Komma ,dann die zweite hälfte, also $temp1[0] Komma $temp1[1] = z.b 22 Komma 5.
danke

ps: es ist ein punkt kein Komma dazwischen, desired-temp=23.5

betateilchen

noch einfacher...


my $temp = ReadingsVal("SZThermostat","desired-temp","99");
$temp =~ s/\./ Komma /;


In $temp steht danach der Text im gewünschten Format.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

RedStar73

geil, danke  ;D
geht 1a,aber wo könnte man lesen wofür steht die s und der Schrägstrich usw. , und wie könnte man es doch mit Split machen, wegen andere Projekte.
danke

betateilchen

Zitat von: RedStar73 am 28 Februar 2015, 21:54:03
wo könnte man lesen wofür steht die s und der Schrägstrich usw.

Überall da, wo regexp erklärt wird, und zu diesem Thema gibt es gefühlte 2 Millionen Tutorials im Internet.

Zitat von: RedStar73 am 28 Februar 2015, 21:54:03
und wie könnte man es doch mit Split machen, wegen andere Projekte.


my $temp = ReadingsVal(irgendeinSensor,irgendeinReading,"99.0");
my @a = split(/\./,$temp);
$temp = "$a[0] Komma $a[1]";


Funktioniert hier einwandfrei.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!