NAME
Acme::Tao - enforce proper respect for the Tao
SYNOPSIS
use Acme::Tao;
or
use Acme::Tao qw($something_that_must_not_be_constant);
DESCRIPTION
Everyone knows that the Tao is not constant. But some people just might not get it. To make sure no one tries to use constant Tao in a program with your module, put a use Acme::Tao at the top of your code. If Tao has been made constant by time your module is used, Acme::Tao will die with a nice message. Note that the package in which Tao is constant is irrelavent.
Of course, if all Acme::Tao did was check for attempts to make the Tao constant, it would be a fairly useless module. So it will also check for any other symbols you might want to not have as constants.
For example:
use Acme::Tao qw(foo);
This will die if foo is defined as a constant in the current package.
use Acme::Tao qw(::foo);
This will die if foo is defined as a constant in the main:: package. This is the same as main::foo.
If Acme::Tao is checking for particular symbols, it will not check for a constant Tao.
MESSAGES
The messages are stored in @Acme::Tao::messages. Feel free to add to them. You can even subclass Acme::Tao:
package My::Tao;
use Acme::Tao ();
use vars(@messages @ISA);
@ISA = qw(Acme::Tao);
@messages = ( ... );
push @Acme::Tao::messages, @messages;
1;
__END__
AUTHOR
James G. Smith, <jsmith@cpan.org>
I owe Kip Hampton a big thank you for mentioning the idea in passing.
COPYRIGHT
Copyright (C) 2002 James G. Smith. This module is free software. It may be used, redistributed, and/or modified under the same terms as Perl.