my %handles; sub handle_for_name { my $f = shift; if ($handles{$f}){ return $handles{$f}; } else { open my $h, '<', $f or die "Can't open file '$f': $!"; $hanldes{$f} = $h; return $h; } }