#! perl -slw use strict; use constant ALLPRODUCTS =>0; use constant PROHIBITED =>1; my @allProducts = map { int rand 10_000 } 1..1000; my @selection = map { $allProducts[rand 1000] } 1..50; sub randProduct (\@\@) { local $"="\cA"; #!" my ($choice, $disallowed) = ('', "@{$_[PROHIBITED]}"); $choice = $_[ALLPRODUCTS]->[rand @{$_[ALLPRODUCTS]}] while 1+index( $disallowed, $choice ); return $choice; } my $chosen = randProduct @allProducts, @selection;