Your mistake: local does not declare a variable.

All it does is, at runtime, temporarily save the value of the global variable, and clear it; and restore it to its old value when the scope is left.

Taking into account that the global variables $a and $b have a special status with regard to strict, because of their connection to sort, and these therefore don't need a declaration, it should be clear to you by now that strict simply complains because you haven't actually declared $aa.

For that purpose, use

use vars qw($aa);
or our, as in
our $aa;
to declare it as a global variable; or in a similar way, use my to make it a lexical variable:
my $aa;
n.b. If you want to declare multiple variables at once with our or my, put the comma separated list between parentheses. For use vars, put the names in qw(...) next to each other separated with whitespace — not commas.

Note that in general it's a big mistake to make $a or $b a lexical variable, because that would mess up their use with sort really good.

For more on the difference between lexical variables and global variables, see perlfaq7: What's the difference between dynamic and lexical (static) scoping? Between local() and my()?


In reply to Re: Local Scope Variables by bart
in thread Local Scope Variables by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.