package strict;

$strict::VERSION = "1.14";

my ( %bitmask, %explicit_bitmask );

BEGIN {
    # Verify that we're called correctly so that strictures will work.
    # Can't use Carp, since Carp uses us!
    # see also warnings.pm.
    die sprintf "Incorrect use of pragma '%s' at %s line %d.\n", __PACKAGE__, +(caller)[1,2]
        if __FILE__ !~ ( '(?x) \b     '.__PACKAGE__.'  \.pmc? \z' )
        && __FILE__ =~ ( '(?x) \b (?i:'.__PACKAGE__.') \.pmc? \z' );

    # which strictures are actually in force
    %bitmask = (
        refs => 0x00000002,
        subs => 0x00000200,
        vars => 0x00000400,
    );

    # which strictures have at some point been turned on or off explicitly
    # and must therefore not be touched by any subsequent `use VERSION` or `no VERSION`
    %explicit_bitmask = (
        refs => 0x00000020,
        subs => 0x00000040,
        vars => 0x00000080,
    );

    my $bits = 0;
    $bits |= $_ for values %bitmask;

    my $inline_all_bits = $bits;
    *all_bits = sub () { $inline_all_bits };

    $bits = 0;
    $bits |= $_ for values %explicit_bitmask;

    my $inline_all_explicit_bits = $bits;
    *all_explicit_bits = sub () { $inline_all_explicit_bits };
}

sub bits {
    my $do_

... [truncated 3691 chars] ...

ragma will abort with

    Unknown 'strict' tag(s) '...'

As of version 1.04 (Perl 5.10), strict verifies that it is used as
"strict" to avoid the dreaded Strict trap on case insensitive file
systems.

Beginning with Perl 5.12, use of "use VERSION" (where VERSION >= 5.11.0) now
lexically enables strictures just like "use strict" (in addition to the normal
"use VERSION" effects and features.)  In other words, "use v5.011" or higher
now implies "use strict" automatically, as noted in
L<perl5120delta/"Implicit strictures"> and L<C<use VERSION>|perlfunc/use VERSION>.

=cut
