Один из способов прервать поиск - вызвать die
из обработчика exec
, а затем использовать eval
, чтобы перехватить исключение во внешней области видимости. Например:
use feature qw(say);
use strict;
use warnings;
use File::Find::Rule;
my $count = 0;
my @files;
eval {
File::Find::Rule->new->file
->exec( sub { die if $count++ > 10; push @files, $_[2]; return 1; })->in('.');
};
if( $@ ) {
say "Aborted search after ", $count - 1, " matches";
}