in reply to Re^3: Strings with @
in thread Strings with @
Lexical filehandles behave like any other reference and they are easily passed around between subroutines (no \*glob stuff). They also have the advantage that they self close the file when they go out of scope. So, you dont have to worry about two parts of your code clobbering each other by using the same global filehandle, you get autoclose behavior when the file goes out of scope (globals if not closed explicitly may not be closed until process termination), and you get a more consistant behaviour/use of the variable. The latter point is important as it means you cant write a bunch of subs that all read from the same filehandle unless those subs also accept the filehandle as an argument. This is a good thing as it clarifies the data flow of your code.
I know of no disadvantages of using lexical filehandles. IMO its pretty well always better to use them over global filehandles.
|
|---|