The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.


Alarm::_TieSIG - Module handling tying of %SIG for alarm extensions.


This is an internal utility module for use with the Alarm::* alarm extensions, that handles tying of the Perl built-in variable %SIG. This is deep magic and you use this module at your own risk.

To use this class, simply use it and then call the Alarm::_TieSIG::tiesig() function. This replaces %SIG with a dummy tied hash.

Whenever the new %SIG is accessed, this class checks to see if the requested key is ALRM. If so, it calls sethandler() for STORE's, and gethandler() for FETCHes. You must provide both of these methods in your package.

All other operations are passed on to the original, magic %SIG.

Note: Do not call tiesig() more than once. Doing so produces a warning and no other effects.


The following code will disable, with warnings, attempts to set SIGALRM handlers in your program (although it's not impossible to get past if someone really wanted to):

  use Alarm::_TieSIG;

  sub sethandler {
    warn "\$SIG{ALRM} has been disabled.\n";

  sub gethandler {
    warn "\$SIG{ALRM} has been disabled.\n";


This module is not guaranteed to work. In fact, it will probably break at the most inconvient time. If this module breaks your program, destroys your computer, ruins your life, or otherwise makes you unhappy, do not complain (especially not to me). It's your own fault.


Written by Cory Johns (c) 2001.