Apart from using diagnostics to print out longer error messages, you can also use the "program" version of diagnostics, called "splain". Just pipe your error messages to <samp>splain</samp>, or paste them into its standard input, or whatever.
in reply to Uninitialized value in string warnings (was: Warnings:)
Here's how it works:
#&91;ariels@HumptyDumpty ariels]$ splain
/usr/bin/splain: Reading from STDIN
Use of uninitialized value in string at script.pl line 14.
Use of uninitialized value in string at script.pl line 14 (#1)
(W uninitialized) An undefined value was used as if it were already defined. It was
interpreted as a "" or a 0, but maybe it was a mistake. To suppress this
warning assign a defined value to your variables.