in reply to do [...], @INC subs, 3-args open to heredoc refs (oh my)
In fact, I partially understand how it works, but not completely. As I told you on IRC, it's a two steps trick.
First, a hook is installed inside @INC. What this sub does is to check whether it's second argument is an arrayref, and derefence it, hence returning the contained list.
Second, do() is passed an arrayref with a filehandle and a coderef inside. As do() also uses @INC, the hook that was installed is invoqued and returns the filehandle which is read and eval'd by do().
The last thing I don't understand is when and how the coderef (the second element of the arrayref given to do() is called. It is obviously called as it plays the role of a filter, but I don't understand how.
And the use of the 3-args open() with a scalarref as file name is just a convenient way to avoid having real files everywhere in the hierarchy (plus, it also avoid path-related problems).
But I think that this test script uses a few features that are not documented anywhere except in the source code.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: do [...], @INC subs, 3-args open to heredoc refs (oh my)
by vkon (Curate) on May 01, 2006 at 18:13 UTC | |
by ForgotPasswordAgain (Vicar) on May 03, 2006 at 11:40 UTC |