Scary situation, not fun, but I think determining a strategy is your best bet. I don't know if this has ever been done, but I wonder if you could write a utility that would figure out all the scalars, arrays and hashes declared, and have this utility grep thru the code to figure out where 'my' hasn't been used.

It might be too gnarly a path to even go down though ...

I wonder if you could break the code into smaller chunks and lib-ify it, so you can fix and do unit testing on individual subs?

If the code is bad enough I usually just plan on transplanting code into a new file and fixing as I rewrite each sub, that way there's a method to the madness, and I can incrementally fix the code without 'breaking' the original.



-mr.dunstan

In reply to Re: Best way to fix a broken but functional program? by mr.dunstan
in thread Best way to fix a broken but functional program? by idnopheq

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.