Thread values eines Hash durch ein array filtern (Daten von FHEM)
(13 answers)
Opened by Tom at 2020-05-24 13:04
Sieht nach Homeautomation mit Perl aus ;) Stimmt's?
Ich nehme mal an, du kennst Perl schon? Wenn nicht, wenn's also im nachfolgenden unverständlich, frage bitte. Ich babe nicht ganz verstanden wie die Daten bei dir ankommen, korrigiere mich, wenn nötig. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #!/usr/bin/perl use strict; use warnings; use 5.010; use utf8; use Data::Dumper; # Kann auskommentiert werden, wenn alles läuft my $daten = "Wohnen -> Roll1, Wohnen -> Roll2, Wohnen -> Roll3, Bad -> Roll4, HWR -> Roll5 Wohnen -> Roll6, "; my @daten = split /,?\n/,$daten; # Daten nach ,LF aufteilen # Kann auskommentiert werden, wenn alles läuft say Dumper \@daten; # nur zu Ausgabe was nach split drin ist my %hash; map { my ($key, $value) = split /\s+->\s+/; # Zeile am -> aufteilen, um Schlüssel + Wert zu bekommen push @{ $hash{$key} },$value; # Wert in Array (wegen mehrfacher Werte!) schieben } @daten; # Kann auskommentiert werden, wenn alles läuft say Dumper \%hash; # # nur zu Ausgabe was am Schluss drin ist Erzeugt bei mir dann: $VAR1 = [ 'Wohnen -> Roll1', 'Wohnen -> Roll2', 'Wohnen -> Roll3', 'Bad -> Roll4', 'HWR -> Roll5', 'Wohnen -> Roll6' ]; $VAR1 = { 'Wohnen' => [ 'Roll1', 'Roll2', 'Roll3', 'Roll6' ], 'Bad' => [ 'Roll4' ], 'HWR' => [ 'Roll5' ] }; Last edited: 2020-05-24 14:30:56 +0200 (CEST) |