#!/usr/bin/perl use warnings; use strict; sub NEXT ($) { $_[0]->() } sub prime_iterator { my $num = 0; sub { do { $num++; } until ( (1 x $num) !~ /^(11+)\1+$/); return $num; } } my $prime = prime_iterator; print NEXT $prime, "\n" for (1 .. shift || 10);