perl-5.34.0
$^H

WARNING: This variable is strictly for internal use only. Its availability, behavior, and contents are subject to change without notice.

茘☗��: �����勐����違�壠ウ絲����������篏睡����̹��絎���������障����� �����勐櫜����с��������������絎鴻�壠����ャ�ŝ�鎀���眼���������櫝�醇�с����������障�����

This variable contains compile-time hints for the Perl interpreter. At the end of compilation of a BLOCK the value of this variable is restored to the value when the interpreter started to compile the BLOCK.

�����勐����違�˨�� Perl ��ゃ�潟�帥����ŝ�帥�勉�潟�潟����ゃ�������勉����潟�������ャ����障����� BLOCK ��勉�潟�潟����ゃ�̥��篋������˨�������勐����違�勐�ゃ� ��ゃ�潟�帥����ŝ�帥�� BLOCK ��勉�潟�潟����ゃ�˨�����紮������������勐�ゃ����祉�������障�����

When perl begins to parse any block construct that provides a lexical scope (e.g., eval body, required file, subroutine body, loop body, or conditional block), the existing value of $^H is saved, but its value is left unchanged. When the compilation of the block is completed, it regains the saved value. Between the points where its value is saved and restored, code that executes within BEGIN blocks is free to change the value of $^H.

Perl �����㋘�㏍�激�˨�˨�鴻�潟�若����������ゃ����㏍����壩�����(eval ��勌賢荳˨��required ��������� �����<�ゃ�˨����泣����˨�若����潟�勌賢荳˨��loop ��勌賢荳˨����>散篁���������㏍�����)�� �����若�鴻�����紮�����������������憜����� $^H ��勐�ゃ�壚��絖���������障����������ゃ� 紊���眼�������障�������� �����㏍����壔�勉�潟�潟����ゃ�˨��腟�������������篆�絖������������ゃ����祉�������障����� ��ゃ�勌��絖�������緇í�勰����勐�亥�鴻�с��BEGIN �����㏍����壔�勌賢��у��茵������������潟�若����虁�ɾ�宴� $^H ��勐�ゃ��紊���眼�с����障�����

This behavior provides the semantic of lexical scoping, and is used in, for instance, the use strict pragma.

�����勖�壔����������壔�㋘�㏍�激�˨�˨�鴻�潟�若����������<�������勌賢��т戎�����障��; 箴���������⓾� use strict �����������障�����

The contents should be an integer; different bits of it are used for different pragmatic flags. Here's an example:

���絎鴻�壩�贋�違�с�������鴻����с��; ���������罸���̥�違�ŝ�������í�違�������í�違�������☖戎��������障����� 篁ヤ����壚����с��:

    sub add_100 { $^H |= 0x100 }

    sub foo {
        BEGIN { add_100() }
        bar->baz($boon);
    }

Consider what happens during execution of the BEGIN block. At this point the BEGIN block has already been compiled, but the body of foo() is still being compiled. The new value of $^H will therefore be visible only while the body of foo() is being compiled.

BEGIN �����㏍����壔�勐��茵�筝㏍�̬儀�����������������������⓾�帥�障����� �����勖����鴻�� BEGIN �����㏍����壔�壩�≪�˨�潟�潟����ゃ�˨�������⓾����障�������� foo() ��勌賢荳˨�壔�障����潟�潟����ゃ�˩賢��с����� 緇���c�� $^H ��勖�違�������ゃ�� foo() ��勌賢荳˨����潟�潟����ゃ�˩賢��˨�勉� 荀���������������堺�ャ�障�����

Substitution of BEGIN { add_100() } block with:

BEGIN { add_100() } �����㏍����壔��篁ヤ����勉��������紊���眼��������:

    BEGIN { require strict; strict->import('vars') }

demonstrates how use strict 'vars' is implemented. Here's a conditional version of the same lexical pragma:

��í�勉�������� use strict 'vars' ���絎�茖���������⓾����������������������障����� 篁ヤ����壠�������㋘�㏍�激�˨�˨����í�違����勖�>散篁���������с��:

    BEGIN {
        require strict; strict->import('vars') if $condition
    }

This variable was added in Perl 5.003.

�����勐����違�� Perl 5.003 ��ц申�����������障��������