in reply to A reproducible shuffle? ("stable shuffle")

If you want to keep a shuffle persistent, I would supply the "shuffle order" as a config file and also allow the option of easily creating a new shuffle:

use strict; use List::Util 'shuffle'; use GetOpt::Long; GetOptions( ... ); my @items = get_all_items; my @shuffle = shuffle 0..$#items; if ($save_shuffle_sequence) { open my $fh, ">", $save_shuffle_sequence or die "Couldn't save shuffle sequence to '$save_shuffle_seque +nce': $!"; print {$fh} "@shuffle"; }; if ($load_shuffle_sequence) { open my $fh, "<", $load_shuffle_sequence or die "Couldn't load shuffle sequence from '$load_shuffle_seq +uence': $!"; @shuffle = map { split /\s+/ }, <$fh>; }; my @shuffled_items = @items[ @shuffle ]; my @other_items_shuffled_in_parallel = @other_items[ @shuffle ];