Wenn ich Sie verstehe, brauchen Sie vielleicht kein Array von Nullen; Sie benötigen einen Hash. Die Hash-Schlüssel werden die Werte in der anderen Anordnung sein und die Hash-Werte wird die Anzahl der Male der Wert in dem anderen Array vorhanden sein:
use strict;
use warnings;
my @other_array = (0,0,0,1,2,2,3,3,3,4);
my %tallies;
$tallies{$_} ++ for @other_array;
print "$_ => $tallies{$_}\n" for sort {$a <=> $b} keys %tallies;
Ausgang:
0 => 3
1 => 1
2 => 2
3 => 3
4 => 1
Ihre Frage zu beantworten, mehr direkt, ein Array mit einem Bündel von Nullen aufgefüllt zu erstellen, können Sie die Technik, die in diesen beiden Beispielen verwenden:
my @zeroes = (0) x 5; # (0,0,0,0,0)
my @zeroes = (0) x @other_array; # A zero for each item in @other_array.
# This works because in scalar context
# an array evaluates to its size.
Zeigen Sie uns den Code, mit dem Sie Probleme haben. * Warum * brauchst du es auf 0 gesetzt? [XY-Problem] (http://www.perlmonks.org/?node=XY%20problem) – Daenyth
Es ist etwas Ähnliches. Ich habe ein anderes Array mit Zahlen wie [0,0,0,1,2,2,3,3,3,4] jetzt muss ich die Anzahl von 0,1,2,3,4 zählen also werde ich ein anderes Array verwenden ... und die Zählung im angegebenen Index speichern. so muss ich arr [0] = 3 arr [1] = 1 arr [2] = 2 arr [3] = 3 arr [4] = 4 so wie und wann I stoßen ein Element I do ... arr [i] = arr [i] + 1; dafür muss ich mit Elementen beginnen, die mit 0 initialisiert wurden. Der obige Code funktioniert. Aber es wirft auch eine Warnung auf. – jerrygo
Sie können $ arr [i] ++ anstelle von $ arr [i] = $ arr [i] + 1; Auch wenn Ihr Array leer ist, wird $ arr [i] ++ immer noch $ arr [i] auf 1 setzen; – MkV