Поскольку вы перетасовываете только первое измерение массива, List::Util::shuffle
будет работать без каких-либо изменений.
Perl не имеет многомерных массивов, он имеет массивы скаляров, каждый из которых также может быть массивом. По сути, это многомерный массив, но это означает, что вы можете использовать обычные операции над массивами, такие как shuffle
, поскольку shuffle
не волнует, какие значения у массива (и в этом случае они будут другими массивами).
поэтому строка:
my @random = shuffle \@array1, \@array2, \@array3;
совпадает с
my @random = shuffle 1, 2, 3;
, что касается shuffle
(список из 3 элементов для перемешивания).
при условии, что ваши 2D-данные содержатся в массиве @data
my @data = (
[1234, 34],
[4564, 45],
...
);
тогда вы просто напишите:
use List::Util 'shuffle';
my @random = shuffle @data;
и тогда вы получите обычный доступ к 2D-структуре:
say $random[0][1];