=over

=item %^H
X<%^H>

The C<%^H> hash provides the same scoping semantics as L<C<$^H>|/$^H>.  This
makes it useful for implementing lexically scoped pragmas.  See L<perlpragma>.
All the entries are stringified when accessed at runtime, so only simple values
can be accommodated.  This means no references to objects, for example.

Each time a statement completes being compiled, the current value of
C<%^H> is stored with that statement, and can later be retrieved via
C<(caller($level))[10]>.  See L<perlfunc/caller EXPR>.

When putting items into C<%^H>, in order to avoid conflicting with other
users of the hash there is a convention regarding which keys to use.
A module should use only keys that begin with the module's name (the
name of its main package) and a "/" character.  For example, a module
C<Foo::Bar> should use keys such as C<Foo::Bar/baz>.

This variable was added in Perl v5.6.0.

=back