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

Reply via email to