|Problems? Is your data what you think it is?
Setting up signal handlers for an object with access to $selfby ZZamboni (Curate)
|on Apr 19, 2000 at 22:35 UTC
Give signal handlers within an object access to $self by defining them with an anonymous subroutine. Updated: to reflect additional comments below about establishing per-object signal handlers.
And call $object->set_signal_handlers() after creating the object (or $self->set_signal_handlers() from within the object itself).
As pointed out below, the above technique has the problem that signal handlers in Unix are per-process, so if more than one object sets a signal handler for the same signal using the technique above, only one of them will be executed. The following code solves this problem (slightly modified from code below, and combining my code with chromatic's) by using a single per-class signal handler, and a hash in which the specific per-object handlers are stored as code references. When the per-class handler is called, it calls all the per-object handlers in sequence. I wonder if this could be declared a belonging to class UNIVERSAL and then have every object in your program use it :-)