The relationship between typeglobs, filehandles, and symbolic references is an ancient and mysterious
one. Since filehandles cannot be stored directly in scalars, typeglobs used to be the only way to pass
filehandles into or out of subroutines:
# example of passing a filehandle to a subroutine
sub print_to_filehandle {
$fh = shift;
print $fh @_;
}
# pass filehandle as typeglob
print_to_filehandle(*STDOUT, "Hello Passed Filehandle /n");
# pass filehandle as scalar reference to typeglob
$fh = *STDOUT;
print_to_filehandle($fh, "Hello Again");