Use File::Which qw(which); sub get_dir_file_list_iter { my $dir = shift; my $FIND = which 'find'; my $CMD = qq/$FIND -L "$dir" -type f -print/; return ( sub { my $chunk_size = shift // 1; my @ary; while ( my $fn = <$FH> ) { chomp $fn; push( @ary, $fn ); last if @ary == $chunk_size; } return (@ary); } ); }