Ah, well, that's quite a lot to explain, but I shall take your questions one at a time:
What's the meaning of the "post =>" ?
Here the
=> operator, commonly known as the
fat comma is simply "stringifying" (i.e turning the bareword
post into a string) its left-hand side argument, which in this case is
post. For more information on the
fat comma see.
perlop. Looking at it from a higher level it is also specifying that the
post handler is being provided. For information on
Filter::Include's handlers see. the
HANDLERS section.
What is the meaning of "sub (" without the subname ?
When
sub is used without a name it is creating an anonymous sub and so is acting as an
anonymous subroutine constuctor. This means that it will create a subroutine and return a reference to that subroutine. It is anonymous by virtue of the fact that it can be only referred to by its reference and not its name, which is orthogonal to the anonymous array (
[]) and anonymous hash (
{}) constructors. For more information on anonymous subroutines see.
perlsub.
What should be in $_[0] and $_[1] ?
As documented in the
HANDLERS. section of
Filter::Include the first argument (
$_[0]) will contain the name of the file or module being included and the second argument (
$_[1]) will be the code that has just been filtered.
What's the meaning of "$Filter::Include::LINE" ?
This was a little more subtle and is not currently documented in
Filter::Include, which I apologise for. It holds the current line number as of the last include. This should definitely be documented and perhaps better exposed through the API. Your post definitely gave me pause for thought about how your problem could solved nicely and if it should in fact be part of the module as it certainly looks to be a handy feature. Perhaps, again, it could be implemented as another option to
import. Thanks for your input, it is, as always, much appreciated.