sub yoursubhere { my $p = shift; my $v = shift; my $check = shift; my @lastresults = (0, 0); my $try; while ($lastresults[1] < $p) { #... @lastresults = $check->($try); } $try; }