Hallo,
ich versuche in meinem 99_myUtil.pm alle Devices vom Typ dummy mit al seinen attr zu lesen und in eine Datei zu schreibe.
ich bekomme im LOG den Fehler:
'Type of argument to each on reference must be unblessed hashref or arrayref at ./FHEM/99_myUtils.pm line 1206.'
Hier mal dazu mein Perlversuch:
foreach my $dev (sort keys %defs) {
if ( $defs{$dev}{TYPE} eq "dummy" ) {
my $output = "define $dev $defs{$dev}{TYPE} $defs{$dev}{DEF}\n";
while ( my ($key, $value) = each($attr{$dev}) ) { ### hier passiert es
$output .= "attr $dev $key $value\n";
}
print OUTdef "$output\n";
my $devState = Value("$dev");
my $zeile_set= "set $dev $devState";
print OUTset "$zeile_set\n";
}
}
Laut Syntax braucht each ein Hash und diese Syntax geht wohl nur in älteren Perl.
Kann mir jemand helfen, wie es richtig sein muss?
Wo findet man denn eine Beschreibung zu solchen Dingen wie %defs und sicher noch viele anderen????
Schon mal Dank an meine Retter.
Meine Perlverion ist wohl zu alt, um es nachzustellen, aber versuch es mal so:
while ( my ($key, $value) = each %{$attr{$dev}} )
Gruß
Hans
Es rennt und alles richtig.
Nochmals Dank.
Hast Du einen Lnk wo man etwas über die FHEM Hashes lesen kann???
Gruß
Schön das es klappt. Als Quelle kenne ich auch nur den Code der Module.
Gruß
Hans
Schau mal hier: http://www.fhemwiki.de/wiki/DevelopmentModuleIntro
Grüße Jörg
Dank Euch beiden. Es ist genau was ich meinte.
Gruß
list -r TYPE=dummy