in reply to Sending filehandles?

If you use the "new style" syntax (update: new as of v5.6.1, released about seven years ago — so not really all that new...)

open(my $fh, "<", $filename) or die "Could not open file '$filename' +: $!";

you can pass the filehandle (here $fh) around like any other variable.