You could try using diagnostics:-
in reply to Uninitialized value in string warnings (was: Warnings:)
just add the following to your program
you may need to comment out use strict; and remove the '-w' flag. What diagnostics does is give you a discription of what may be the problem.
In you particular case you are faced with using a possibly undefined variable as you have stated. You could either go ahead with your proposed idea, or "initialise" everything at the start of your code. EG
Or you could put your potentialy uninitialied variable into a safe state after it is defined and before use eg.
$b = defined($b)?$b:"";
Hope this helps.
---If it doesn't fit use a bigger hammer