Hallo, habe mir folgende sub erstellt um aus einem Statistic Reading (Gas-Sensor) die einzelnen Werte rauszuschreiben.
sub Gas_split
{
my $gsp = ReadingsVal("Gas_Sensor","statGasCnt","0");
my @gsp = split /[:,\s\/]+/, $gsp;
foreach(@gsp) {
return "$_\n";
}
}
my $gsp = ReadingsVal("Gas_Sensor","statGasCnt","0") liefert: Hour: 0.22 Day: 2.07 Month: 2.07 Year: 2.07 (since: 2015-03-13_12:54:55 )
Aus dem Ausdruck brauche ich die einzelnen Werte von Stunde, Tag, Monat und Jahr in der Form $h,$D,$M und $Y
Da komme ich jetzt nicht so richtig vorwärts, die foreach Schleife liefert leider auch nur den 1.Teil vom Ausdruck zurück (Ausgabe: Hour)
Kann mir da bitte jemand einen Tip geben?
Siehe auch hier, aber das wurde schon OT, desshalb der neue Tread:
http://forum.fhem.de/index.php/topic,32827.msg273045.html#msg273045
VG
Frank
Du springst ja sofort beim ersten Durchlauf mit return aus der Schleife raus. Soll das so?
Warum eigentlich so kompliziert?
sub test {
my $input = "Hour: 0.22 Day: 2.07 Month: 2.07 Year: 2.07 (since: 2015-03-13_12:54:55 )";
my @daten = split(/ /,$input);
my $h = $daten[1];
my $D = $daten[3];
my $M = $daten[5];
my $Y = $daten[7];
return "Stunde: $h Tag: $D Monat: $M Jahr: $Y";
}
liefert:
Stunde: 0.22 Tag: 2.07 Monat: 2.07 Jahr: 2.07
Danke funktioniert. Warum die foreach nach dem ersten Durchlauf Abbricht lag natürlich am return. betateilchens Beispiel hat den Vorteil das ich sofort alle Strings so habe, wie ich sie brauche.
Vielen Dank
Frank
das geht übrigens noch einfacher:
sub test {
my $input = "Hour: 0.22 Day: 2.07 Month: 2.07 Year: 2.07 (since: 2015-03-13_12:54:55 )";
my (undef,$h,undef,$D,undef,$M,undef,$Y,undef) = split(/ /,$input,9);
return "Stunde: $h Tag: $D Monat: $M Jahr: $Y";
}