Рекурсия:
sub fill_rand {
my ($array, $count) = @_;
if ($count >= 1) {
unshift @$array, rand();
fill_rand ($array, --$count);
}
}
my @array;
fill_rand (\@array, 100);
Версия "Оптимизирован для хвоста":
sub fill_rand {
my $array = shift;
my $count = shift;
unshift @$array, rand();
if ($count > 1) {
$count--;
@_ = ($array, $count);
goto &fill_rand;
}
}
my @array;
fill_rand(\@array, 100);
Использование eval:
my @array;
eval("\@array = (" . ("rand(), " x 100) . ");");
Если вы предполагаете, что мой perl является случайным (не необоснованным предположением), вы можете использовать сам файл perl в качестве источника случайных данных:
open FILE, __FILE__ or die "Can't open " . __FILE__ . "\n";
my $string;
read FILE, $string, 100;
close FILE;
my @array = map { ord } split //, $string;
Конечно, вы каждый раз будете получать одни и те же результаты, но это полезно для тестирования.