These are the programming problems -- sometimes called bugs -- that
you can stare at for hours without having a clue about why your
script doesn't work. If you find yourself in this position, take
a walk or eat some chocolate. In other words, take a break from
staring at the computer screen. You can also find another programmer
to walk through the code with you. Quite often while explaining
the code to someone else, the problem becomes obvious.

Besides these two options, you can do the following:

Use the -w
Command-line Option -- This option will produce warning messages
about questionable code.

Use the strict
pragma -- This pragma will force you to declare all variables
before using them.

Use the built-in debugger-The built-in debugger will let
you single-step through your script, examining or changing variable
values as needed.

Each of these options is discussed in separate sections later.

As a general rule, when debugging logic errors it helps to break
complex expressions and statements into simpler ones: the simpler,
the better. Use temporary variables if you need to. If you use
the ++ or -
operators inside function calls or complex expressions, don't.
Move the decrement or increment operation to a separate line.
After the program is debugged, you can always recombine the simple
statements into complex ones.

Tip
One of the most common logic problem is using the assignment operator (=) when you should use the equality operator (==). If you are creating a conditional expression, you'll almost always use the equality operator (==).