It's code that is tricking all the POD parsers. See, in your code snippet, there is no POD. POD section are defined as to start with the a '=' (followed by a letter) at the beginning of a line, when perl expects a new statement. But here, at the moment of =pod, perl isn't expecting a new statement. In fact, it's busy finding the end of a here document -- whose end is =cut.
So, what's happening here is that:
=pod
This module uses the following constants:
bang_eth => 1
biff => 2
krunch => 3
is a here document (it starts with a blank line above =pod, and ends with a blank line), with =cut as terminator. The rest is just parsing this string.
Why does it appear in the documentation? Because POD parsers actually don't parse POD. They parse anything between ^=\w and ^=cut, without looking at context, assuming to capture all the POD (and nothing but the POD). Most of the time, this heuristic works well, but as with all heuristics, it sometimes will break down, and someone will (a)buse it. | [reply] [d/l] [select] |
Wow, that is pretty neat. So the here document (creatively!) grabs the info in the POD for the perl interpreter, while POD parsers will just see the POD block. Allowing you to have a single point of change for those values.
Thanks, JavaFan!
Fun note, this code also plays holy hell with the syntax highlighter in my IDE.
Strange things are afoot at the Circle-K.
| [reply] |
Except that there isn't any POD... ;-) It's the POD parsers that think there's POD hiding inside a string (here doc).
Fun note, this code also plays holy hell with the syntax highlighter in my IDE.
I've never bothered with syntax highlighters, and your remark doesn't convince me I was wrong ;-)
| [reply] |