The only limit on the number of open files is whatever underlying
limits your OS imposes. I'm not familar with OSX, but with
some OSes it's just a case of messing with ulimit; others require setting a kernel paramter in say /etc/system; others require recompiling the kernel.
For an array of filehandles, the following demonstrates this;
it prints the first line from each of 3 common system files:
my @fhs;
for my $file (qw(/etc/hosts /etc/rpc /etc/services)) {
my $fh;
open $fh, $file or die "open $file: $!\n";
push @fhs, $fh;
}
print scalar <$_> for @fhs;
I believe there is a Perl module that maintains a cache of open filehandles, but I can't for the life of me remember what it's called. No doubt someone else will.