- ${^GLOBAL_PHASE}
-
The current phase of the perl interpreter.
perl インタプリタの現在のフェーズ。
Possible values are:
取り得る値は:
- CONSTRUCT
-
The
PerlInterpreter*
is being constructed viaperl_construct
. This value is mostly there for completeness and for use via the underlying C variablePL_phase
. It's not really possible for Perl code to be executed unless construction of the interpreter is finished.PerlInterpreter*
はperl_construct
で構築されます。 この変数はほとんど完全性のためと、基礎となっている C 変数PL_phase
経由での使用のために存在しています。 実際にはインタプリタの構築が完了しない限り Perl コードを 実行することはできません。 - START
-
This is the global compile-time. That includes, basically, every
BEGIN
block executed directly or indirectly from during the compile-time of the top-level program.これはコンパイル時にグローバルです。 これは基本的に、直接実行されたり、トップレベルプログラムの コンパイル時の間に間接的に実行される全ての
BEGIN
です。This phase is not called "BEGIN" to avoid confusion with
BEGIN
-blocks, as those are executed during compile-time of any compilation unit, not just the top-level program. A new, localised compile-time entered at run-time, for example by constructs aseval "use SomeModule"
are not global interpreter phases, and therefore aren't reflected by${^GLOBAL_PHASE}
.BEGIN
ブロックとの混乱を避けるために、このフェーズの名前は "BEGIN" では ありません; これらは単にトップレベルプログラムではなく、任意のコンパイル ユニットのコンパイル中に実行されます。 例えばeval "use SomeModule"
のように、実行時に入った 新しいローカル化されたコンパイル時はグローバルなインタプリタフェーズではなく、 従って${^GLOBAL_PHASE}
に反映されません。 - CHECK
-
Execution of any
CHECK
blocks.CHECK
ブロックの実行。 - INIT
-
Similar to "CHECK", but for
INIT
-blocks, notCHECK
blocks."CHECK" と似ていますが、
CHECK
ブロックではなくINIT
ブロック。 - RUN
-
The main run-time, i.e. the execution of
PL_main_root
.メインの実行; つまり
PL_main_root
の実行。 - END
-
Execution of any
END
blocks.END
ブロックの実行。 - DESTRUCT
-
Global destruction.
グローバルなデストラクタ。
Also note that there's no value for UNITCHECK-blocks. That's because those are run for each compilation unit individually, and therefore is not a global interpreter phase.
また、UNITCHECK ブロックのための値はないことに注意してください。 なぜなら、これらはコンパイルユニット毎に独立に実行され、従って グローバルなインタプリタフェーズではないからです。
Not every program has to go through each of the possible phases, but transition from one phase to another can only happen in the order described in the above list.
全てのプログラムが可能な全てのフェーズを通らなければならないわけでは ありませんが、あるフェーズから他のフェーズへの移行は上述の 順でのみ起こります。
An example of all of the phases Perl code can see:
Perl コードの全てのフェーズを見る例です:
BEGIN { print "compile-time: ${^GLOBAL_PHASE}\n" } INIT { print "init-time: ${^GLOBAL_PHASE}\n" } CHECK { print "check-time: ${^GLOBAL_PHASE}\n" } { package Print::Phase; sub new { my ($class, $time) = @_; return bless \$time, $class; } sub DESTROY { my $self = shift; print "$$self: ${^GLOBAL_PHASE}\n"; } } print "run-time: ${^GLOBAL_PHASE}\n"; my $runtime = Print::Phase->new( "lexical variables are garbage collected before END" ); END { print "end-time: ${^GLOBAL_PHASE}\n" } our $destruct = Print::Phase->new( "package variables are garbage collected after END" );
This will print out
これは以下のものを出力します:
compile-time: START check-time: CHECK init-time: INIT run-time: RUN lexical variables are garbage collected before END: RUN end-time: END package variables are garbage collected after END: DESTRUCT
This variable was added in Perl 5.14.0.
この変数は Perl 5.14.0 で追加されました。