I stumbled across a bug in Pod::Simple the other day: It does not create
the promised {'raw'} structure element usable by parsers for L<>
constructs if they occur within another formatting code, such as the
fairly common C<L<foo::bar>>.
I figured out a way to fix this, but in doing so I realized that
Pod::Simple does not catch nested L<... L<...>...>, contrary to the
specification:
Authors must not nest L<...> codes. For example, "L<The L<Foo::Bar>
man page>" should be treated as an error.
Pod::Simple does not treat this as an error. I think it should. Is
there any disagreement?
Rather than aborting parsing at the point where this occurs, I think it
should continue on, but generate an errors section, like it does for
most other errors. Properly handling nested L<> is tricky. Currently,
it sort of works, but the generated output for html doesn't link
properly, as one can't nest links in html. I came up with this
tentative message, which perhaps explains too much of how I was able to
easily keep parsing with this error, and still fix the original {'raw'}
bug; improved wording welcome:
Nested L<> are illegal. Pretending inner one is X<> so can continue
looking for other errors.