Not to make any assumptions, but how long is the sub, where did you originally declare the variable, how far away is its first use, and how far away the redeclaration? I'm just curious because I've never come across this problem and can't imagine it taking me hours to spot.

I generally declare variables right when I use them the first time, and scope them tightly, trying to declare them in the innermost of the blocks they're used in. My code blocks are as short as I can keep them - a screenfull is long, more than two is under most circumstances too much. As a result, there's very rarely any occasion where a variable name is declared further than a screen from where it goes out of scope.

For all intents and purposes these habits make it impossible to blunder in ways like this. Of course I may be way off mark, but it simply puzzles me that anyone would have this kind of trouble. My personal experience suggests it's just not possible to overlook duplicate declarations with habitual tight scoping and late declaration. YMMV of course.

Makeshifts last the longest.


In reply to Re^3: Prohibiting redeclaration of lexicals in inner scope (coding habits?) by Aristotle
in thread Prohibiting redeclaration of lexicals in inner scope by JohnLon

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.