6. The local keyword
Before Perl 5 came out and Perl got lexical scoping and the my
keyword, an older local
keyword was made available for programmers to
temporarily "localise" the values of variables (or parts there of) in Perl.
As opposed to my
, which is lexically scoped, local
is
dynamically scoped. What happens when one writes a
local $myvar = NEW_VALUE_EXPR();
(which will work only for package
variables) is that perl will store the previous value of the variable somewhere
safe, allow the programmer to tamper with it as it pleases, and restore its
value to its previous, saved state, when the block exits. As opposed to
my, the new localised value will survive function calls in different functions.
So when should local be used?