Re: [rt.cpan.org #55602] Bug #12239 was a mistake (nested formatting codes)

[email protected] (Allison Randal)
Newsgroups perl.pod-people
Message-ID <[email protected]>

Ricardo Signes wrote:
> * Allison Randal <[email protected]> [2010-03-16T08:01:49]
>> David E. Wheeler wrote:
>>> My interpretation of that was that any angle brackets inside should be
>>> considered literal, and thus escaped. The whole point of `<<   >>` AFAICS
>>> was to allow one to use literal brackets without escaping them, as one must
>>> do in `<>`.
>> That's my interpretation too. If you have to escape every angle
>> bracket inside doubled-up C<<>> tags, there's really no point in
>> even having the doubled-up tags.
> 
> No one is saying that you have to escape every angle bracket inside anything.
> 
> For example, these should all be fine:
> 
>   The ->, or dereference, operator...
> 
>   Call C<< $object->foo >>
> 
>   If x > 10
> 
>   All items where C<< $x > 10 >>
> 
>   In the event that C<< $x > L<Foo>->blort >>....
> 
> In the first four, there is no ambiguity.  We don't have something in the form
> X<...> where X is [A-Z].  The only thing in question is the last one.  The
> question is whether all characters until the matching \s>> are considered
> literally or whether they're still Pod.
> 
> The bug report from CJM seems correct: formatting codes should work inside
> C<<>>.  There is nothing about that change which would require escpaing -> or
> other non-formatting-code uses of angle brackets.

Hmmmm... that does put a different light on it... But, I still think 
it's more useful and less confusing as an absolute escape on all angle 
brackets within the region. So either a) every angle is literal:

   C<< $x > L<Foo>->blort >>

or b) escape all non-special angles:

   C<$x E<gt> LE<lt>FooE<gt>-E<lt>blort>

The alternatives suggested:

   C<< $x > LZ<><Foo>->blort >>
   C<< $x > LE<lt>FooE<gt>->blort >>

Have a design taste of hacks required by a formatting language that's 
too limited and inconsistent.

The bug reporter asked how to write:

   S<< C<< name => value >> >>

That's just:

   S< C<< name => value >> >

The non-interpolation rule doesn't apply until you get to the double-angles.

Allison
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.