Instead, package users should use the state_name_for subroutine to access it. This will help coders avoid this pitfall:
if( $MyConfig::state_name_for{AL} = 'Alaska' ){ print "oops! we just assigned Alaska to the AL key!\n"; }

But your state_name_for is defined

sub state_name_for{ return \%state_name_for; }
That returns a reference to the hash %state_name_for and exposes it to the user just like accessing the hash directly. To protect the hash, put something like this in MyConfig:
sub get_state_name { $state_name_for{ +shift} }
and keep %state_name_for a private lexical in MyConfig. Now the user can't change the hash content, accidentally or deliberately. They still can query the hash the way it is intended.

Anno


In reply to Re^5: Variable declaration in 'required' file doesn't work under 'strict'? by Anno
in thread Variable declaration in 'required' file doesn't work under 'strict'? by punch_card_don

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.