Was wäre der effizienteste Weg, um die Array-Elemente neu anzuordnen, so dass sie mit dem entsprechenden Indexwert (minus eins) geordnet sind &? Die Variable $ dat ist die maximale Anzahl von Elementen (die im Array niemals überschritten wird, aber möglicherweise vorhanden ist oder nicht vorhanden ist).Perl: Array nach Elementwert neu anordnen
$dat = 14;
my @array = (1, 12, 14, 7, 8, 4)
Mit anderen Worten:
my @new_array = (1, undef, undef, 4, undef, undef, 7, 8, undef, undef, undef, 12, undef, 14);
*** EDIT **** Fuller Code-Schnipsel:
foreach $auth (keys %activity) {
my @value = @{ $activity{$auth} };
@value = uniq @value;
@value = sort @value;
s/^0// for @value;
my $count = scalar(grep $_, @value);
my $dat = max(@value);
@{$activity{$auth}} = @value;
}
ist es immer von 1 läuft bis zu '$ dat'? – syck
Werte innerhalb des Arrays können von Zeit zu Zeit abweichen (aber niemals dat überschreiten). Ich habe einige Variationen von "If" ausprobiert, aber es ist wirklich chaotisch. Ich scheine auf das Entfernen der vorhandenen Array-Index nach dem Verschieben des Wertes an seine neue Position fest – user3425900
"Sortierung" sollte wahrscheinlich vor 'uniq' kommen – infixed