package strict;

$strict::VERSION = "1.14";

my ( %bitmask, %explicit_bitmask );

BEGIN {

    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' );

    %bitmask = (
        refs => 0x00000002,
        subs => 0x00000200,
        vars => 0x00000400,
    );

    %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_explicit = caller eq __PACKAGE__;
    my $bits = 0;
    my @wrong;
    foreach my $s (@_) {
        if (exists $bitmask{$s}) {
            $bits |= $explicit_bitmask{$s} if $do_explicit;
            $bits |= $bitmask{$s};
        }
        else {
            push @wrong, $s;
        }
    }
    if (@wrong) {
        require Carp;
        Carp::cr

... [truncated 3205 chars] ...

pragma 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