WHAT IS THIS? ============= This is "AtExit", a Perl5 module which exports a function name "atexit()" to perform ANSI-C style exit processing for Perl5 programs; and a class named "AtExit" to register clean-up functions for any variable-scope in whicvh the AtExit object is defined. AUTHORS/CONTRIBUTORS ==================== Andrew Langmead (initial draft). Brad Appleton (Version 1.02 and 2.00). Michael A. Chase (Version 2.00). COPY/REUSE POLICY ================= Copyright (C) 1996 Andrew Langmead. All rights reserved. AtExit is free software; you can redistribute it and/or modify it under the terms of the Artistic License distributed with Perl version 5.000 or (at your option) any later version. Please refer to the Artistic License that came with your Perl distribution for more details. The Artistic License should have been included in your distribution of Perl. It resides in the file named "Artistic" at the top-level of the Perl source tree (where Perl was downloaded/unpacked -- ask your system administrator if you dont know where this is). Alternatively, the current version of the Artistic License distributed with Perl can be viewed on-line on the World-Wide Web (WWW) from the following URL: http://www.perl.com/perl/misc/Artistic.html The latest version of Perl can be obtained on the World-Wide web (WWW) from the following URL: http://www.perl.com/CPAN/src/latest.tar.gz DISCLAIMER =========== This software is distributed in the hope that it will be useful, but is provided "AS IS" WITHOUT WARRANTY OF ANY KIND, either expressed or implied, INCLUDING, without limitation, the implied warranties of MERCHANTABILITY and FITNESS FOR A PARTICULAR PURPOSE. The ENTIRE RISK as to the quality and performance of the software IS WITH YOU (the holder of the software). Should the software prove defective, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. IN NO EVENT WILL ANY COPYRIGHT HOLDER OR ANY OTHER PARTY WHO MAY CREATE, MODIFY, OR DISTRIBUTE THE SOFTWARE BE LIABLE OR RESPONSIBLE TO YOU OR TO ANY OTHER ENTITY FOR ANY KIND OF DAMAGES (no matter how awful - not even if they arise from known or unknown flaws in the software). Please refer to the Artistic License that came with your Perl distribution for more details. CONTENTS ======== Please see the file named "MANIFEST" which should have been included in the AtExit distribution. REQUIREMENTS ============ * Perl version 5.002 or later BUILDING & INSTALLING ===================== Please see the perl "ExtUtils::MakeMaker" manpage for how to build and install using the Makefile.PL template. In a nutshell, simply typing: perl Makefile.PL should build a Makefile with the usual targets like "all", "clean", "test", and "install". BUGS ==== Please send all bug reports to Brad Appleton HISTORY ======= 19-Jan-1999 Brad Appleton ----------------------------------------------------------------------------- Version 2.01 - rmexit may now be called (as a function or a method) with *no* arguments. When this happens, *all* exit-handlers are removed! 18-Oct-1998 Brad Appleton ----------------------------------------------------------------------------- Version 2.00 Made the following changes based on patches contributed by Michael Chase - AtExit may now be used as a class to create objects which invoke callbacks whenever the AtExit object is destroyed (or goes out of scope with no other references to it). - atexit() amd rmexit() may now be invoked as functions, or as methods. When invoked as methods, they operate on an object for destruction-time callbacks. Otherwise they operate on the program for program-exit-time callbacks. - Added the exit_subs(), is_exiting() and ignore_when_exiting() subroutines to replace the use of @AtExit::EXIT_SUBS, $AtExit::EXITING, and $AtExit::IGNORE_WHEN_EXITING. Use of these three variables is now deprecated in favor of these new subroutines. Although atexit & rmexit are still exported (for backward compatibility), exit_subs(), is_exiting() and ignore_when_exiting() are NOT exported by default. - $AtExit::EXITING, $AtExit::IGNORE_WHEN_EXITING, and @AtExit::EXIT_SUBS are now merely aliases to a class hash/object. 04-Sep-1996 Brad Appleton ----------------------------------------------------------------------------- Version 1.02 - Added the rmexit() function to unregister subroutines if desired. - Added $EXITING and $IGNORE_WHEN_EXITING variables to control behavior of atexit() during exit-processing. - Tested and documented the behavior of atexit() during exit-processing. 02-Sep-1996 Brad Appleton ----------------------------------------------------------------------------- Version 1.01 - Some minor changes to documentation and variable names at the request of some comp.lang.perl.modules readers. 27-Aug-1996 Brad Appleton ----------------------------------------------------------------------------- Version 1.00 posted to comp.lang.perl.modules to garner feedback, and to see if the module was too trivial to merit placing on CPAN. - Added sections to the manpage as recommended by Andrew Langmead. - Convert "soft-refs" to subs into "hard-refs" at Andrew's recommendation. - Added exit-handler arguments to atexit() at Andrew's recommendation. - Changed atexit() to return a sub-ref (instead of nothing). 26-Aug-1996 Brad Appleton ----------------------------------------------------------------------------- Polished up a bit for production and added documentation. Sent the result to Andrew Langmead for his comments and approval. 22-Aug-1996 Andrew Langmead ----------------------------------------------------------------------------- Initial version created.