> On 17 Dec 2015, at 16:16, Zefram <zef...@fysh.org> wrote:
> 
> Elizabeth Mattijsen via RT wrote:
>> Fixed with 8d50dabfa9a3b690b18a
> 
> Done the hard way.  Because it lacks most of the refinements of
> Str.perl, it looks like it might still have bugs that Str.perl avoids.
> For example, leading combining characters will become part of the grapheme
> of the opening delimiter, which won't match the closing delimiter if
> the matching is grapheme-aware.  It is certainly LTA in its treatment
> of unprintables.  You should (again?) consider calling .perl on the
> appropriate path attribute.
> 
> The same method also has a similar escaping problem for $!CWD.  Here the
> easy way doesn't just use a .perl call to escape the string; you can
> use .perl for the whole :$!CWD pair.  You could profitably do likewise
> for the :$!SPEC pair, which doesn't have an escaping problem but does
> duplicate serialisation knowledge.  I therefore suggest (untested)
> 
>    $.is-absolute
>       ?? "{$.abspath.perl}.IO({:$!SPEC.perl})"
>       !! "{$.path.perl}.IO({:$!SPEC.perl}, {:$!CWD.perl})"

I see your point about escaping strings in a .perl.  This has, however, much 
wider ramifications that will need to be checked.  In any case, Str.perl cannot 
be used, because it puts double quotes around it.  Which would be a set of 
double quotes too many.

The points about $!SPEC.perlification knowledge living in 2 places and the fact 
that $!CWD wasn’t .perled, taken into account in 467582dbc9c621fe4bcf0fc363 .



Liz

Reply via email to