# $Id: Signal.pm,v 1.4 1998-10-27 16:16:13-05 roderick Exp $ # # Copyright (c) 1997 Roderick Schertler. All rights reserved. This # program is free software; you can redistribute it and/or modify it # under the same terms as Perl itself. package IPC::Signal; use 5.003_94; # __PACKAGE__ use strict; use vars qw($VERSION @ISA @EXPORT_OK $AUTOLOAD %Sig_num @Sig_name); require Exporter; $VERSION = '1.00'; @ISA = qw(Exporter); @EXPORT_OK = qw(sig_num sig_name sig_translate_setup %Sig_num @Sig_name); %Sig_num = (); @Sig_name = (); sub sig_num ($); sub sig_name ($); sub sig_translate_setup () { return if %Sig_num && @Sig_name; require Config; # In 5.005 the sig_num entries are comma separated and there's a # trailing 0. my $num = $Config::Config{'sig_num'}; if ($num =~ s/,//g) { $num =~ s/\s+0$//; } my @name = split ' ', $Config::Config{'sig_name'}; my @num = split ' ', $num; @name or die 'No signals defined'; @name == @num or die 'Signal name/number mismatch'; @Sig_num{@name} = @num; keys %Sig_num == @name or die 'Duplicate signal names present'; for (@name) { $Sig_name[$Sig_num{$_}] = $_ unless defined $Sig_name[$Sig_num{$_}]; } } # This autoload routine just is just for sig_num() and sig_name(). It # calls sig_translate_setup() and then snaps the real function definitions # into place. sub AUTOLOAD { if ($AUTOLOAD ne __PACKAGE__ . '::sig_num' && $AUTOLOAD ne __PACKAGE__ . '::sig_name') { require Carp; Carp::croak("Undefined subroutine &$AUTOLOAD called"); } sig_translate_setup; *sig_num = sub ($) { $Sig_num{$_[0]} }; *sig_name = sub ($) { $Sig_name[$_[0]] }; goto &$AUTOLOAD; } 1 __END__ =head1 NAME IPC::Signal - Utility functions dealing with signals =head1 SYNOPSIS $number = sig_num $name; $name = sig_name $number; sig_translate_setup; $number = $Sig_num{$name}; $name = $Sig_name[$number]; =head1 DESCRIPTION This module contains utility functions for dealing with signals. Nothing is exported by default. =over =item B I Returns the signal number of the signal whose name (sans C) is I, or undef if there is no such signal. This function is prototyped to take a single scalar argument. =item B I Returns the chopped signal name (like C) of signal number I, or undef if there is no such signal. This function is prototyped to take a single scalar argument. =item B If you want to use the @Sig_name and %Sig_num variables directly you must call B to initialize them. This isn't necessary if you only use the function interfaces sig_name() and sig_num(). This function is prototyped to take no arguments. =item B<%Sig_num> A hash with chopped signal name keys (like C) and integer signal number values. =item B<@Sig_name> An array mapping signal numbers to chopped signal names (like C). =back =head1 AUTHOR Roderick Schertler > =head1 SEE ALSO perl(1). =cut