Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"

Re: help in $SIG

by sk (Curate)
on Feb 09, 2006 at 06:32 UTC ( #529008=note: print w/replies, xml ) Need Help??

in reply to help in $SIG

From the Camel Book -

The routine indicated by $SIG{__DIE__} is called when a fatal exception is about to be thrown. The error message is passed as the first argument. When a __DIE__ hook routine returns, the exception processing continues as it would have in the absence of the hook, unless the hookroutine itself exits via a goto, a loop exit, or a die. The __DIE__ handler is explicitly disabled during the call, so that you yourself can then call the real die from a __DIE__ handler. (If it weren't disabled, the handler would call itself recursively forever.) The case is similar for __WARN__.

When you call  die "something" the sub ref'ed in  $SIG{__DIE__} is called (you have an anonymous sub in your code). So the top-down approach is broken because your die called the subroutine with your die text as the first arg. If you modify your code to something like this, you will see what is going on -

#!/usr/bin/perl use strict; use warnings; local $SIG{'__DIE__'} = sub { (my $x = $_[0]) =~ s/foo/bar/g; print $x +; die $x; }; eval { die "foo lives here" }; print "got here\n";


bar lives here at testme line 7. got here
As you can see foo changed to bar. Also the program prints got here becaue die was called from an eval block.

As an exercise try deleting eval (just the word from the above code) see what happens -



Replies are listed 'Best First'.
Re^2: help in $SIG
by uva (Sexton) on Feb 09, 2006 at 06:47 UTC
    thanks SK,,can you give link for learning things like $SIG,$ENV.,etc., $SIG is inbuit one right?
      Check out  perldoc perlvar on your local machine. You can also use the online version of perldoc (nice formatting). Here is the link to perlvar online

      Check out Tutorials and Q&A links. They have very good info. cheers


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://529008]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (7)
As of 2018-07-21 19:29 GMT
Find Nodes?
    Voting Booth?
    It has been suggested to rename Perl 6 in order to boost its marketing potential. Which name would you prefer?

    Results (450 votes). Check out past polls.