use List::Util qw(first); my @primes = (2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47); sub listprimes { my $n = shift; my @foo; first { !($_ < $n ? push @foo, $_ : 0) } @primes; @foo; } sub random { my ($lo, $hi) = @_; return $lo + int rand $hi - $lo + 1; } for (1 .. 5) { my $r = random (10, 50); my @f = listprimes ($r); say "r == $r: @f"; }