それはrequire
興味深いことではありません。それは、プラグマが で行うことimport
です。
ほとんどの (すべて?) プラグマは$^H
orを使用します%^H
。パーサーはこれらを解析対象のスコープにローカライズします。つまり、以前の値に戻します。
たとえば、strictを取ります。そのimport
変更し$^H
ます。$^H
コンパイラにどのように動作するかを指示する一連のフラグが含まれています。
$ perl -e'
BEGIN { printf "%04X\n", $^H }
{
use strict;
BEGIN { printf "%04X\n", $^H }
}
BEGIN { printf "%04X\n", $^H }
'
0100
0702
0100
$^H
Perl の使用のために予約されていますが、同様にローカライズされた%^H
ものは一般的な使用に利用できます。たとえば、feature::qw_commentは、 によってロードされたときにパーサーに 1 回フックしますが、true でrequire
ない限り何もしません$^H{'feature::qw_comments::'}
。インポートは同等です
sub import { $^H{'feature::qw_comments::'} = 1; }