Wie so oft bei Perl gilt auch hier TIMTOWTDI ("There is more than one way to do it")
Den Ansatz mit
perlfunc push hat die GwenDragon schon gezeigt.
Ein anderer Ansatz ist Autovivifikation - d.h. ein Array-Element wird angelegt, wenn Du darauf zugreifst. Das könnte z.B. so aussehen
my @result;
foreach my $i (1..$max) {
$result[$i-1] = compute_result($i);
}
Bitte beachten: Wenn Du stattdessen
$result[$i] = ... schreibst, ist die Größe des Arrays
int(@result)anschließend $max+1 weil auch das Element
$result[0] angelegt wird (als
undef). Dafür enthält
$result[N] dann auch den Wert
compute_result(N).
Oft geht es auch mit
perlfunc map oder
perlfunc grep, z.B. so
my @result = map {compute_result($_)} (1..$max);