Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

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";

Output

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 -

cheers

SK


Comment on Re: help in $SIG
Select or Download Code
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

      SK

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://529008]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (15)
As of 2014-08-28 13:41 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (261 votes), past polls