Re: q and escaping paired delimiters
authorKenneth Albanowski <kjahds@kjahds.com>
Sun, 27 Jul 1997 06:49:26 +0000 (18:49 +1200)
committerTim Bunce <Tim.Bunce@ig.co.uk>
Wed, 6 Aug 1997 12:00:00 +0000 (00:00 +1200)
commit1bcde0caf99dffc5d0184a16aa465899f96b7bb4
treef30128c7cae5e057962420765e8a815c28cb934c
parent2a92aaa05aa1acbf01092228d30e9b1d7b2a3f61
Re: q and escaping paired delimiters

On Sun, 27 Jul 1997 chrisn@rock.petersons.com wrote:

> $\ = "\n";
> print '\'this\'';
> print q{'this'};
> print q{{this}};
> print q{\{this\}};
>
> I would expect the output to be:
>
> 'this'
> 'this'
> {this}
> {this}

That this should be fixed makes perfect sense to me. You can view easily
view backwhacking both sides as a generalization of backwhacking the quote
for an unbalanced q''.

In fact, the code in toke.c looks a little suspicious, as if a cut'n'paste
error happened, and the balanced branch didn't get the cleanup it
deserved. There's a "if term != '\\'" statement that does nothing, for
example.

Here'a patch over 5.004_01 (although I'd expect it to work with most
versions) to allow you to escape both the starting and end quotes for q
(unbalanced and qq is unchanged), and the obligatory addition to the
tests. If nobody has any complaints, I expect this will be in _02.

Credited: Gurusamy Sarathy <gsar@engin.umich.edu>

p5p-msgid: Pine.LNX.3.93.970727172201.350K-100000@kjahds.com
t/base/lex.t
toke.c