use warnings; use strict; my @first = qw( 1 3 5 7 9 11 13 15 17 19 21 23 ); my @second = qw( 1 5 9 13 17 21 ); sub random_from { my ($first, $second) = @_; my %invalid = (map { $_ => 1 } @$second); my $return; do { # Choose a random key from the combined listing $return = $first->[rand(@$first)]; } while ($invalid{$return}); return $return; } print "Selection: ",random_from(\@first, \@second),$/;