http://www.perlmonks.org?node_id=267482


in reply to Lexical vs. Package Variables (With a little local thrown in)

I find your explanations nice and clear; maybe you could also append the output of your scripts, just to make your points even easier to grasp.
A note about local: it's real use is for temporarily overwriting Perl's automatic variables, which cannot be redeclared as lexicals, for instance
#here $/ is usually a newline (on Unix, at least) { #localize the input record separator and undefine it local $/=undef; #now reading from STDIN yelds the entire contents at once my $whole_file=<>; #do what you like with lexical $whole_file #... } #here $/ is restored back to its original value