Hallo,
gibt es evtl. eine fertige Möglichkeit, ein via devspec2array erzeugtes Array nach bspw. einem Attributwert zu sortieren?
Mir schwebt so etwas in der Art vor:
Zitat
my @Kreise = devspec2array("NAME=Schaltaktor.Bewaesserung.*Kreis.*:FILTER=a:AutoWatering!=0:SORTBY=a:WateringOrder);
In dem Beispiel habe ich eine Reihenfolge im Attribut WateringOrder hinterlegt. Sortiert wird aber nur noch Device Name, egal wie ich filtere.
Übersehe ich hier etwas? Hat evtl. jemand einen Perl Codeschnipsel?
Danke für eure Tipps!
Ronny
Ich habe mir jetzt folgende Krücke gebastelt:
my @kreise = devspec2array("NAME=Schaltaktor.Bewaesserung.*Kreis.*:FILTER=AutoWatering!=0");
@kreise = sortArrayByAttr(\@kreise, "WateringOrder");
sub sortArrayByAttr($$) {
my ($arrName,$attr) = @_;
my @arr = @$arrName;
my @tmpArr;
foreach my $d (@arr) {
my $o=AttrVal($d,$attr,$d);
push (@tmpArr,[$d,$o]);
}
if (@tmpArr > 0) {
my @tmpArr_sort=sort{$a->[1] cmp $b->[1]}@tmpArr;
return map $_->[0], @tmpArr_sort;
} else {
return @arr;
}
}
Wenn es OTB etwas eleganteres gibt, freue ich mich über Vorschläge.
Viele Grüße
Ronny