in reply to Difference Between use warnings and use warnings FATAL => 'all'

> What's the rationale for using the latter instead of the former?

I'm surprised nobody mentioned till now, but personally, I use it from time to time for debugging.

If warnings get messy, it's easier to handle them one by one. (not necessarily => all warnings)

YMMV =)

Cheers Rolf

( addicted to the Perl Programming Language)

  • Comment on Re: Difference Between use warnings and use warnings FATAL => 'all' (debugging)
  • Download Code

Replies are listed 'Best First'.
Re^2: Difference Between use warnings and use warnings FATAL => 'all' (debugging)
by GotToBTru (Prior) on Dec 30, 2013 at 14:48 UTC

    For debugging purposes, I was very happy to learn the following:

    $SIG{__WARN__} = sub { print $_[0]; $DB::single = 1 };

    I was annoyed to notice that warning messages did not appear as I was running code in the debugger. That might be fixable; I have never looked into it. This statement is now included in just about any program I write of any length. Not only does it give me the message but stops the debugger at the point of warning.

    I comment out the line when not running in the debugger because it generates a warning message. What irony.

      Thanks, personally I rarely use the debugger for debugging, at least not with code I wrote.

      :)

      To see warnings with perl -d you could try using it from an IDE like emacs to separate output frame from debugging GUI.

      update

      First I have to say that I don't have the problem that warnings aren't shown in my debugger-instance, but I tweaked a lot in the past. Anyway ...

      > I comment out the line when not running in the debugger because it generates a warning message.

      ... you could put that code into debugger's rc-file '.perldb' or into PERL5DB environment variable to make it the default behavior of the debugger.

      Like that you don't need to change the scripts. =)

      update

      this works for me

      lanx@nc10-ubuntu:$ cat .perldb sub afterinit { $SIG{"__WARN__"}= sub { print "$_[0]"; $DB::single=1 }; }

      see perldebug for details

      Cheers Rolf

      ( addicted to the Perl Programming Language)