[Toulouse-pm] Un truc sympa

Michel Rodriguez mirod at xmltwig.com
Mon Apr 5 10:36:37 CDT 2004


J'ai vu ca dans journal d'Andy lester sur use.perl.org, et ca me semble
assez ingenieux pour vous en faire part:

HOWTO: Finding errors "at (eval 469) line 3" [ 1 Comment | #18179 ]

If you've ever used eval, or any modules, chances are you've had an error
like this:

    Use of uninitialized value in string eq at (eval 469) line 3.

It's telling you that somewhere on the 3rd line of the code passed to the
469th call to eval, you're using an undefined value. That's not very fun!
Who knows where eval was called the 469th time? You could walk through
your program and try to keep track of every time eval was called, but
that's not very fun. So what to do?

Turn your warning handler into something more descriptive. At the top of
your code, do this:

    use Carp;
    $SIG{__WARN__} = \&carp;
    $SIG{__DIE__} = \&confess;

cluck and confess are equivalent to warn and die, respectively, except
that they print a stack trace as well as the error message. Now, rerun
your code and get

    Use of uninitialized value in string eq at (eval 469) line 3.
    at /home/alester/Lib/TW/CP.pm line 116

No counting of eval calls required!

--
Michel Rodriguez
Perl & XML
http://www.xmltwig.com




More information about the Toulouse-pm mailing list