{ my %selected_set; my $choose_one = sub { $selected_set{ @input[rand @input] } = 1) }; $choose_one->() while keys %selected_set < $choose_count; my @selected = keys %selected_set; }