Re: Custom $SIG{__DIE__} problem (and I'm glad to be back)

2000-04-04 Thread James G Smith

"Russell D. Weiss" [EMAIL PROTECTED] wrote:

So, onto the problem.  Within the constructor for the wrapper object, I want
to do:
 bless $self, $class;
 $main::SIG{'__DIE__'} = $self-custom_die;

Try

  bless $self, $class;
  $main::SIG{'__DIE__'} = sub { $self-custom_die(@_) };

This will make sure $self is the first argument to custom_die, it
will be the same $self as when the signal handler was called, and
the signal handling mechanism won't have to know about it.
+-
James Smith - [EMAIL PROTECTED] | http://www.jamesmith.com/
[EMAIL PROTECTED] | http://sourcegarden.org/
  [EMAIL PROTECTED]  | http://cis.tamu.edu/systems/opensystems/
+--



RE: Custom $SIG{__DIE__} problem (and I'm glad to be back)

2000-04-04 Thread Russell D. Weiss

Thanks James,

Great little trick It worked!

Thanks for the help,
Russ

Russell Weiss
Founder and Technical Manager
InfoRelay Online Systems, Inc.
http://www.InfoRelay.net/
 


 Try
 
   bless $self, $class;
   $main::SIG{'__DIE__'} = sub { $self-custom_die(@_) };
 
 This will make sure $self is the first argument to custom_die, it
 will be the same $self as when the signal handler was called, and
 the signal handling mechanism won't have to know about it.
 +-
 
 James Smith - [EMAIL PROTECTED] | http://www.jamesmith.com/
 [EMAIL PROTECTED] | http://sourcegarden.org/
   [EMAIL PROTECTED]  | 
 http://cis.tamu.edu/systems/opensystems/
 +-
 -
 



Re: Custom $SIG{__DIE__} problem (and I'm glad to be back)

2000-04-04 Thread Randal L. Schwartz

 "James" == James G Smith [EMAIL PROTECTED] writes:

James "Russell D. Weiss" [EMAIL PROTECTED] wrote:
 
 So, onto the problem.  Within the constructor for the wrapper object, I want
 to do:
 bless $self, $class;
 $main::SIG{'__DIE__'} = $self-custom_die;

James Try

James   bless $self, $class;
James   $main::SIG{'__DIE__'} = sub { $self-custom_die(@_) };

James This will make sure $self is the first argument to custom_die, it
James will be the same $self as when the signal handler was called, and
James the signal handling mechanism won't have to know about it.

But ensure that $self is a lexical ("my") variable.  If it's a package
variable (even with local()) this will not work, because a closure
reference will not get made.  You also don't need the $main:: because
%SIG (actually *SIG) is forced to main::.

Just another couple of Perl tips from someone who wrangles Perl all day
every day... :)

-- 
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
[EMAIL PROTECTED] URL:http://www.stonehenge.com/merlyn/
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!