James Edward Gray II wrote: > > On Wednesday, June 11, 2003, at 05:27 PM, James Edward Gray II wrote: > > > I'm setting the warning signal ($SIG{__WARN__}) to my own handler, > > redirecting warnings to my log file. It is working. I can see the > > call come through, but the passed @_ is completely empty. Shouldn't I > > be able to get the warning message out of there? Thanks for any > > insights. > > Sorry to reply to my own message, but I've figured out what's wrong and > now I'm even more confused. I was doing: > > $SIG{__WARN__} = \&my_warn(); ^^ Lose the parenthesis and it should work.
$ perl -le' sub my_warn { print STDERR "warn sub @_" } $SIG{__WARN__} = \&my_warn(); warn " HI "; ' warn sub Not a subroutine reference at -e line 4. $ perl -le' sub my_warn { print STDERR "warn sub @_" } $SIG{__WARN__} = \&my_warn; warn " HI "; ' warn sub HI at -e line 4. > When I changed it to the following, it started working: > > $SIG{__WARN__} = sub { HANDLE WARN CODE HERE }; > > Can someone please explain the difference between the two assignments > to me? Thanks again. When you use the parenthesis perl calls the sub and in this context expects the return value to be a reference to a subroutine. John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]