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?