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.