Как получить случайный элемент из массива в Perl

Задача. В программе на языке программирования Perl есть массив со значениями. Необходимо получить случайный элемент из этого массива.

Решение этой задачи в Perl получается очень красивое и элегантное. Используется функция rand() для получения случайного индекса элемента.

Вот пример кода. Есть массив в котором нахо этого массива с цветами. Код выводит на экран случайный цвет из этого массива.

▶ Run
#!/usr/bin/perl

my @colors = ('red', 'green', 'blue', 'magenta', 'white');

my $color = $colors[ rand @colors ];

print $color;

Как это работает. Есть массив @colors. В нем есть 5 элементов. Для того чтобы обратиться к первому элементу нужно написать $colors[0], к последнему — $colors[4].

В этом примере rand @colors это все равно что rand(5). При таком использовании массива возвращается количество элементов в массиве. (скалярный контекст).

rand @colors возвращает число от 0 (включительно) до числа 5 (но не включая это число). Например, результат этой операции может быть число 3.70744988833152.

И последний шаг. Результат rand @colors используется в качестве индекса массива. Т.е. получается что-то вроде $colors[ 3.70744988833152 ]. Эта запись возвращает точно такой же элемент массива как и запись $colors[3], т.е. четвертый элемент — строку 'magenta'.

Связанные темы

Другие статьи