Eric Brine <ikegami@adaelis.com> writes: > On Sat, Oct 2, 2010 at 1:58 PM, Florian Ragwitz <rafl@debian.org> wrote: > >> This very much makes sense to me, and I've implemented a ${^PHASE} >> global allowing to differentiate between these phases: >> >> - initial interpreter construction >> - initial compile-time >> - running CHECK blocks >> - running INIT blocks >> - run-time >> - running END blocks >> - global destruction >> > > BEGIN { $SIG{__WARN__} = sub { ... }; } 123; print 456; > > If the above occurred in a module, your scheme would report run-time > in the callback were the module required then. I would like the > handler to know it was called by the compiler. Yes, during run-time the global phase of the interpreter is run-time. Also, BEGIN blocks don't necessarily have anything to do with perl's initial compile phase. While BEGIN blocks in the main program and everything that loads during compile time are executed during the global compile phase, any code you compile later on, with require, string evals, or whatever, will also execute BEGIN blocks, but not during the global compilation phase. I think you're looking for a feature ${^PHASE} doesn't aim to provide.Thread Previous | Thread Next