in reply to passing file handle to functions

If you pass a glob, you can pass both the filehandle and the array with one stone -- the filehandle can always be reopened:
no strict 'vars'; use Fatal qw(open); open local(*KERLIS) , $file; @KERLIS = <I>; close KERLIS; passboth( *KERLIS ); sub passboth { local *FH = shift; # print @FH; # open *FH, $file; }