The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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

strict warnings Acme::USIG

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.