in reply to Intercepting compile time blocks like BEGIN {}

“Sometimes, cleverness is not a virtue.”

Sometimes, the products of “cleverness” prove to be quite uncontrollable.

In my humble opinion, BEGIN blocks are one of those things.   And, if we then try to “intercept” them, so as to prevent them from doing what we don’t want them to do in this-case or that, “well, we have only made matters worse, haven’t we?”

I prize one characteristic of good source code above all others: clarity.   In such code, I am able to quickly read the code and to ascertain, with a very high degree of confidence, that I actually know what it is actually telling the computer to do, and that the computer will actually interpret it in just that way.   This idea of “intercepts” would, IMHO, unfortunately just serve to make the code even more inscrutable than it already may be.

Of course I do not mean the foregoing to be “a blanket statement, true in every case as though it were inscribed by a divine hand in some stone tablets.”   Instead, call it a rule-of-thumb, offered by a thumb that has been whacked with a hammer too many times.

Replies are listed 'Best First'.
Re^2: Intercepting compile time blocks like BEGIN {}
by LanX (Saint) on Aug 09, 2010 at 13:39 UTC
    BEGIN blocks are a crucial part of the use mechanism and responsible for much of the flexibility many CPAN moduls can offer.

    IMHO other so called "clear" languages/products just offer a multitude of specialized mechanisms which aren't really better controllable when using foreign libraries.

    I doubt that those mechanisms are better suited, because normally they diminish flexibility without really enforcing security.

    What's needed is a mechanism to define and enforce the personal level of trust, thats why I want to be able to hook a call-back into the executions at compile-time.

    Perl's Debugger already has many possibilities to hook call-backs into various aspects and phases of execution, it would only complete this set of possibilities for debugging and introspection.

    Cheers Rolf

    UPDATE: > This idea of “intercepts” would, IMHO, unfortunately just serve to make the code even more inscrutable than it already may be.

    Which code are you talking about? I was talking about a command line switch, not of an extension of the Perl syntax. There is no  use intercept intended!