NAME
Acme::use::strict::with::pride - enforce bondage and discipline on very naughty modules.
SYNOPSIS
use Acme::use::strict::with::pride;
# now all your naughty modules get to use strict; and use warnings;
ABSTRACT
using Acme::use::strict::with::pride causes all modules to run with use strict;
and use warnings;
Whether they like it or not :-)
DESCRIPTION
Acme::use::strict::with::pride installs a code reference into @INC
that intercepts all future use
and require
requests. (code references in @INC
were in 5.6.x, but were not documented until 5.8.0, which extends the feature to allow objects in @INC
).
The subroutine in @INC
then finds the module using the normal @INC
path, opens the file, and attaches a source filter that adds "use strict; use warnings;" to the start of every file. This is naughty - it's not a documented feature, it may be changed or removed with no notice, and the current implementation is slightly buggy in subtle cases.
It also changes the global warn and die handlers ($SIG{__WARN__}
and $SIG{__DIE__}
) to subroutines that hide
EXPORT
Nothing. There's no unimport method, so using strict with pride is a one way trip. This could be construed as a bug or a feature, depending on your point of view.
SEE ALSO
BUGS
There's no unimport. There's no way to specify an import list to use strict;
or use warnings;
. There's no way to exclude specific modules (eg Exporter
) from the clutches Acme::use::strict:with::pride
. The error and warning handling is global, rather than being chained, and it won't play nicely with error objects. The source filter in coderef @INC
is undocumented, so I shouldn't be using it.
AUTHOR
Nicholas Clark, <nick@talking.bollo.cx>
COPYRIGHT AND LICENSE
Copyright 2002 by Nicholas Clark
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.