Quoting issue in Windows

Hi All,

Windows 7, sp1, x64
rakudo-star-2019.03-x86_64 (JIT).msi

Why does this type of line keep giving me heartburn?

print( "Drive $Drive" ~ ":" ~ '\' ~ " dismounted\n\n" );

K:\Windows\NtUtil>perl6 -c WinMount.pm6
===SORRY!=== Error while compiling K:\Windows\NtUtil/WinMount.pm6
Confused (runaway multi-line '' quote starting at line 84 maybe?)

at K:\Windows\NtUtil/WinMount.pm6:92
------>       print( "Drive $Drive" ~ ":" ~ '\<HERE>' ~ " dismounted\n\n" );
     expecting any of:
         postfix


I have to take out the '\' and replace it with "\\" to
get it to stop complaining.

-T
0
perl6
11/30/2019 4:33:42 AM
perl.perl6.users 1264 articles. 0 followers. Follow

25 Replies
30 Views

Similar Articles

[PageSpeed] 14

On Fri, Nov 29, 2019 at 8:33 PM ToddAndMargo via perl6-users
<perl6-users@perl.org> wrote:
>
> Hi All,
>
> Windows 7, sp1, x64
> rakudo-star-2019.03-x86_64 (JIT).msi
>
> Why does this type of line keep giving me heartburn?
>
> print( "Drive $Drive" ~ ":" ~ '\' ~ " dismounted\n\n" );
>
> K:\Windows\NtUtil>perl6 -c WinMount.pm6
> ===SORRY!=== Error while compiling K:\Windows\NtUtil/WinMount.pm6
> Confused (runaway multi-line '' quote starting at line 84 maybe?)
>
> at K:\Windows\NtUtil/WinMount.pm6:92
> ------>       print( "Drive $Drive" ~ ":" ~ '\<HERE>' ~ " dismounted\n\n" );
>      expecting any of:
>          postfix
>
>
> I have to take out the '\' and replace it with "\\" to
> get it to stop complaining.
>
> -T

Hi Todd, sounds like a "naked" (single) backslash is being interpreted
as a multi-line separator, the same separator that allows one to do
multi-line input on the terminal command line (below):

mbook:~ homedir$ perl6 -e 'my $Drive = "C"; \
> print( "Drive $Drive" \
>  ~ ":" \
>  ~ "\\" \
>  ~ " dismounted\n\n" );'
Drive C:\ dismounted

mbook:~ homedir$

HTH, Bill.
0
perl6
11/30/2019 7:49:02 AM
On 2019-11-29 23:49, William Michels via perl6-users wrote:
> On Fri, Nov 29, 2019 at 8:33 PM ToddAndMargo via perl6-users
> <perl6-users@perl.org> wrote:
>>
>> Hi All,
>>
>> Windows 7, sp1, x64
>> rakudo-star-2019.03-x86_64 (JIT).msi
>>
>> Why does this type of line keep giving me heartburn?
>>
>> print( "Drive $Drive" ~ ":" ~ '\' ~ " dismounted\n\n" );
>>
>> K:\Windows\NtUtil>perl6 -c WinMount.pm6
>> ===SORRY!=== Error while compiling K:\Windows\NtUtil/WinMount.pm6
>> Confused (runaway multi-line '' quote starting at line 84 maybe?)
>>
>> at K:\Windows\NtUtil/WinMount.pm6:92
>> ------>       print( "Drive $Drive" ~ ":" ~ '\<HERE>' ~ " dismounted\n\n" );
>>       expecting any of:
>>           postfix
>>
>>
>> I have to take out the '\' and replace it with "\\" to
>> get it to stop complaining.
>>
>> -T
> 
> Hi Todd, sounds like a "naked" (single) backslash is being interpreted
> as a multi-line separator, the same separator that allows one to do
> multi-line input on the terminal command line (below):
> 
> mbook:~ homedir$ perl6 -e 'my $Drive = "C"; \
>> print( "Drive $Drive" \
>>   ~ ":" \
>>   ~ "\\" \
>>   ~ " dismounted\n\n" );'
> Drive C:\ dismounted
> 
> mbook:~ homedir$
> 
> HTH, Bill.
> 


Hi Bill,

That would make sense.

I am finding all kinds of little annoyances with the
Windows version that don't exist in the Linux version.
But as long as I can work around them, Perl 6 is so, so
much better than it is not a issue.

Thank you for the help!

-T

One of the weirdest was

for @Result.kv -> $I, $Line {
    if $I % 2 = 0

being told I could not change an immutable object.
0
perl6
11/30/2019 8:05:44 AM
On Sat, Nov 30, 2019 at 12:05 AM ToddAndMargo via perl6-users
<perl6-users@perl.org> wrote:
>
> On 2019-11-29 23:49, William Michels via perl6-users wrote:
> > On Fri, Nov 29, 2019 at 8:33 PM ToddAndMargo via perl6-users
> > <perl6-users@perl.org> wrote:
> >>
> >> Hi All,
> >>
> >> Windows 7, sp1, x64
> >> rakudo-star-2019.03-x86_64 (JIT).msi
> >>
> >> Why does this type of line keep giving me heartburn?
> >>
> >> print( "Drive $Drive" ~ ":" ~ '\' ~ " dismounted\n\n" );
> >>
> >> K:\Windows\NtUtil>perl6 -c WinMount.pm6
> >> ===SORRY!=== Error while compiling K:\Windows\NtUtil/WinMount.pm6
> >> Confused (runaway multi-line '' quote starting at line 84 maybe?)
> >>
> >> at K:\Windows\NtUtil/WinMount.pm6:92
> >> ------>       print( "Drive $Drive" ~ ":" ~ '\<HERE>' ~ " dismounted\n\n" );
> >>       expecting any of:
> >>           postfix
> >>
> >>
> >> I have to take out the '\' and replace it with "\\" to
> >> get it to stop complaining.
> >>
> >> -T
> >
> > Hi Todd, sounds like a "naked" (single) backslash is being interpreted
> > as a multi-line separator, the same separator that allows one to do
> > multi-line input on the terminal command line (below):
> >
> > mbook:~ homedir$ perl6 -e 'my $Drive = "C"; \
> >> print( "Drive $Drive" \
> >>   ~ ":" \
> >>   ~ "\\" \
> >>   ~ " dismounted\n\n" );'
> > Drive C:\ dismounted
> >
> > mbook:~ homedir$
> >
> > HTH, Bill.
> >
>
>
> Hi Bill,
>
> That would make sense.
>
> I am finding all kinds of little annoyances with the
> Windows version that don't exist in the Linux version.
> But as long as I can work around them, Perl 6 is so, so
> much better than it is not a issue.
>
> Thank you for the help!
>
> -T
>
> One of the weirdest was
>
> for @Result.kv -> $I, $Line {
>     if $I % 2 = 0
>
> being told I could not change an immutable object.

Hi Todd, You should definitely write up some code and post it here on
the mailing list, so we all can test it. I found an error "Cannot
modify an immutable Match" a while back (Oct 2019), and it turned out
to be a bug:

https://www.nntp.perl.org/group/perl.perl6.users/2019/10/msg7067.html

Best Regards, Bill.
0
perl6
11/30/2019 8:57:26 AM
On 30/11/2019 09:05, ToddAndMargo via perl6-users wrote:
> One of the weirdest was
>
> for @Result.kv -> $I, $Line {
> =C2=A0=C2=A0 if $I % 2 =3D 0
>
> being told I could not change an immutable object.


Here you're trying to assign 0 to the result of $I % 2, if that's
actually exactly the code. You want to compare here, not assign, i.e.
use =3D=3D instead of =3D

HTH
=C2=A0 - Timo
0
timo
11/30/2019 2:28:36 PM
--000000000000881fd0059892f61b
Content-Type: text/plain; charset="UTF-8"

Also, you may want to use the divisibility operator %% instead of modulo. I
think
    if $i %% 2
Is clearer to read.

On Sat, Nov 30, 2019, 16:28 Timo Paulssen <timo@wakelift.de> wrote:

>
> On 30/11/2019 09:05, ToddAndMargo via perl6-users wrote:
> > One of the weirdest was
> >
> > for @Result.kv -> $I, $Line {
> >    if $I % 2 = 0
> >
> > being told I could not change an immutable object.
>
>
> Here you're trying to assign 0 to the result of $I % 2, if that's
> actually exactly the code. You want to compare here, not assign, i.e.
> use == instead of =
>
> HTH
>   - Timo
>

--000000000000881fd0059892f61b
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"auto">Also, you may want to use the divisibility operator %% in=
stead of modulo. I think<div dir=3D"auto">=C2=A0 =C2=A0 if $i %% 2</div><di=
v dir=3D"auto">Is clearer to read.</div></div><br><div class=3D"gmail_quote=
"><div dir=3D"ltr" class=3D"gmail_attr">On Sat, Nov 30, 2019, 16:28 Timo Pa=
ulssen &lt;<a href=3D"mailto:timo@wakelift.de">timo@wakelift.de</a>&gt; wro=
te:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;b=
order-left:1px #ccc solid;padding-left:1ex"><br>
On 30/11/2019 09:05, ToddAndMargo via perl6-users wrote:<br>
&gt; One of the weirdest was<br>
&gt;<br>
&gt; for @Result.kv -&gt; $I, $Line {<br>
&gt; =C2=A0=C2=A0 if $I % 2 =3D 0<br>
&gt;<br>
&gt; being told I could not change an immutable object.<br>
<br>
<br>
Here you&#39;re trying to assign 0 to the result of $I % 2, if that&#39;s<b=
r>
actually exactly the code. You want to compare here, not assign, i.e.<br>
use =3D=3D instead of =3D<br>
<br>
HTH<br>
=C2=A0 - Timo<br>
</blockquote></div>

--000000000000881fd0059892f61b--
0
rabbiveesh
11/30/2019 4:37:17 PM
On 2019-11-30 00:57, William Michels via perl6-users wrote:
> Hi Todd, You should definitely write up some code and post it here on
> the mailing list, so we all can test it. I found an error "Cannot
> modify an immutable Match" a while back (Oct 2019), and it turned out
> to be a bug:
> 
> https://www.nntp.perl.org/group/perl.perl6.users/2019/10/msg7067.html
> 
> Best Regards, Bill.

Hi Bill,

A few days ago I broke my rule ago I reporting to

https://github.com/rakudo/rakudo/issues/

It is a waste of my time as it is too hard to get
part the guard dog.   I am going to go back to
not reporting them.  I report a lot to Fedora.  They
are very professional about it.  I report to Libre
Office a lot too.  They have an impressive guard dogs
too, but if you keep arguing with him long enough,
a developer will eventually see it and overrule the
guard dog.

But here is a different story.


Windows 7, sp1, x64
rakudo-star-2019.03-x86_64 (JIT).msi

Okay, first a test.

K:\Windows\NtUtil>perl6 -e "say 3 % 2;"
1

Yup modulus works


<UUID.pl6>
#`{

Print out the UUID's of partitions that have a label of BACKUP

C:\NtUtil>perl6 UUID.pl6
partitons with the label of BACKUP:
\\?\Volume{9b358c63-e345-401d-828c-c5f99066269b}\
\\?\Volume{9a60e05f-39b1-41be-8aad-acbe62f78ee4}\
\\?\Volume{9fec274f-2a58-4a44-804d-f7a5777aaa57}\
\\?\Volume{30347b97-d2aa-4b67-a163-dd7e3f133cdf}\
\\?\Volume{981c447a-b600-4fbb-ae44-c743a393e3c5}\
}


my @Result;
my Str $RtnStr;
my Str $DeviceID;
my Str $Label;
my Str $Name;

@Result = qx ( wmic.exe volume get deviceid,label,name ).lines;

say "partitions with the label of BACKUP:";
for @Result.kv -> $I, $Line {
    # my $J = $I % 2;
    # if $J == 1  ||  $Line.chars == 0  { next; };
    if $I % 2 == 1 { next; }

    $DeviceID = $Line.substr(0..48);
    # w7
    # $Label    = $Line.substr(51..66);
    # $Name     = $Line.substr(69..71);

    # w10
    $Label    = $Line.substr(51..58).trim;
    $Name     = $Line.substr(61..63);

    if $Label eq "BACKUP"  {
       say $DeviceID;
       if $Name.contains( ":" )  {
           say "WARNING: $DeviceID is mounted as $Name.  Dismounting";
           $RtnStr = qqx ( MountVol.exe $Name /D );
       }
    }

    # say "Device ID <" ~ $DeviceID ~ ">";
    # say "Label     <" ~ $Label    ~ ">";
    # say "name      <" ~ $Name     ~ ">";
    # say "";
}
</UUID.pl6


K:\Windows\NtUtil>perl6 -c UUID.pl6
Syntax OK

Hmmmmmmm......


K:\Windows\NtUtil>perl6 UUID.pl6
partitions with the label of BACKUP:
Cannot modify an immutable Int (0)
   in block <unit> at UUID.pl6 line 27

24: for @Result.kv -> $I, $Line {
25:    # my $J = $I % 2;
26:    # if $J == 1  ||  $Line.chars == 0  { next; };
27:    if $I % 2 = 0 { next; }
27:

Hmmmm....

Did you catch my error on line 27?   It should have been
"==" not "=".

So maybe the guard dog would have been right on this one.

But you would have though that "$I % 2 = 0" would have
thrown a compiler error.

K:\Windows\NtUtil>perl6 -e "if 3 % 2 = 1 {say \"odd\"; }"
Cannot modify an immutable Int (1)
   in block <unit> at -e line 1


-T
0
perl6
12/1/2019 1:47:46 AM
On 2019-11-30 08:37, Veesh Goldman wrote:
> Also, you may want to use the divisibility operator %% instead of=20
> modulo. I think
>  =C2=A0 =C2=A0 if $i %% 2
> Is clearer to read.

Hi Veesh,

Indeed!  Thank you.  Modulus (%) is burned into my head.
Now all I have to do is remember divisible (%%).

:-)

Thank you.

-T

My notes:


Perl6: divisible: %%

Divisible by 2

$ perl6 -e "if 3 %% 2 {say 'even'}else{say 'odd'; }"
odd


With modulus: %

$ perl6 -e "if 3 % 2 =3D=3D 1  {say 'even'}else{say 'odd'; }"
even

$ perl6 -e "if 3 % 2 =3D=3D 1  {say 'odd'}else{say 'een'; }"
odd
0
perl6
12/1/2019 1:54:39 AM
On 2019-11-30 06:28, Timo Paulssen wrote:
>=20
> On 30/11/2019 09:05, ToddAndMargo via perl6-users wrote:
>> One of the weirdest was
>>
>> for @Result.kv -> $I, $Line {
>>  =C2=A0=C2=A0 if $I % 2 =3D 0
>>
>> being told I could not change an immutable object.
>=20
>=20
> Here you're trying to assign 0 to the result of $I % 2, if that's
> actually exactly the code. You want to compare here, not assign, i.e.
> use =3D=3D instead of =3D
>=20
> HTH
>  =C2=A0 - Timo
>=20

Hi Timo,

Indeed!

And the 64000 dollar question is why did the compiler not
toss it out?

-T
0
perl6
12/1/2019 1:55:58 AM
--00000000000076bfc10598aa17e9
Content-Type: text/plain; charset="UTF-8"

Hi Todd,

Going back to the original post-
    print( "Drive $Drive" ~ ":" ~ '\' ~ " dismounted\n\n" );

Inside a single quote, the \' combination is how you make a single quote, eg
    $ perl6
    > 'Saying \'hello\' to you'
    Saying 'hello' to you

ways around it-

    print( "Drive $Drive:\\dismounted\n\n" ); # I prefer, no need for ~

or

    print( "Drive $Drive:" ~ Q'\' ~ " dismounted\n\n" );

-y


On Sat, Nov 30, 2019 at 8:56 PM ToddAndMargo via perl6-users <
perl6-users@perl.org> wrote:

> On 2019-11-30 06:28, Timo Paulssen wrote:
> >
> > On 30/11/2019 09:05, ToddAndMargo via perl6-users wrote:
> >> One of the weirdest was
> >>
> >> for @Result.kv -> $I, $Line {
> >>     if $I % 2 = 0
> >>
> >> being told I could not change an immutable object.
> >
> >
> > Here you're trying to assign 0 to the result of $I % 2, if that's
> > actually exactly the code. You want to compare here, not assign, i.e.
> > use == instead of =
> >
> > HTH
> >    - Timo
> >
>
> Hi Timo,
>
> Indeed!
>
> And the 64000 dollar question is why did the compiler not
> toss it out?
>
> -T
>

--00000000000076bfc10598aa17e9
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div di=
r=3D"ltr">Hi Todd,<div><br></div><div>Going back to the original post-=C2=
=A0</div><div>=C2=A0 =C2=A0 print( &quot;Drive $Drive&quot; ~ &quot;:&quot;=
 ~ &#39;\&#39; ~ &quot; dismounted\n\n&quot; );<br></div><div><br></div><di=
v>Inside a single quote, the \&#39; combination is how you make a single qu=
ote, eg</div><div>=C2=A0 =C2=A0 $ perl6</div><div><div>=C2=A0 =C2=A0 &gt; &=
#39;Saying \&#39;hello\&#39; to you&#39;=C2=A0</div><div>=C2=A0 =C2=A0 Sayi=
ng &#39;hello&#39; to you</div></div><div><br></div><div>ways around it-</d=
iv><div><br></div><div>=C2=A0 =C2=A0 print( &quot;Drive $Drive:\\dismounted=
\n\n&quot; ); # I prefer, no need for ~<br></div><div><br></div><div>or</di=
v><div><br></div><div>=C2=A0 =C2=A0 print( &quot;Drive $Drive:&quot; ~ Q&#3=
9;\&#39; ~ &quot; dismounted\n\n&quot; );<br></div><div><br></div><div><div=
><div dir=3D"ltr" class=3D"gmail_signature">-y<br></div></div><br></div></d=
iv></div></div></div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" =
class=3D"gmail_attr">On Sat, Nov 30, 2019 at 8:56 PM ToddAndMargo via perl6=
-users &lt;<a href=3D"mailto:perl6-users@perl.org">perl6-users@perl.org</a>=
&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px =
0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-col=
or:rgb(204,204,204);padding-left:1ex">On 2019-11-30 06:28, Timo Paulssen wr=
ote:<br>
&gt; <br>
&gt; On 30/11/2019 09:05, ToddAndMargo via perl6-users wrote:<br>
&gt;&gt; One of the weirdest was<br>
&gt;&gt;<br>
&gt;&gt; for @Result.kv -&gt; $I, $Line {<br>
&gt;&gt;=C2=A0 =C2=A0=C2=A0 if $I % 2 =3D 0<br>
&gt;&gt;<br>
&gt;&gt; being told I could not change an immutable object.<br>
&gt; <br>
&gt; <br>
&gt; Here you&#39;re trying to assign 0 to the result of $I % 2, if that&#3=
9;s<br>
&gt; actually exactly the code. You want to compare here, not assign, i.e.<=
br>
&gt; use =3D=3D instead of =3D<br>
&gt; <br>
&gt; HTH<br>
&gt;=C2=A0 =C2=A0 - Timo<br>
&gt; <br>
<br>
Hi Timo,<br>
<br>
Indeed!<br>
<br>
And the 64000 dollar question is why did the compiler not<br>
toss it out?<br>
<br>
-T<br>
</blockquote></div>

--00000000000076bfc10598aa17e9--
0
not
12/1/2019 8:12:57 PM
On 2019-12-01 12:12, yary wrote:
> Hi Todd,
>=20
> Going back to the original post-
>  =C2=A0 =C2=A0 print( "Drive $Drive" ~ ":" ~ '\' ~ " dismounted\n\n" );=

>=20
> Inside a single quote, the \' combination is how you make a single quot=
e, eg
>  =C2=A0 =C2=A0 $ perl6
>  =C2=A0 =C2=A0 > 'Saying \'hello\' to you'
>  =C2=A0 =C2=A0 Saying 'hello' to you
>=20
> ways around it-
>=20
>  =C2=A0 =C2=A0 print( "Drive $Drive:\\dismounted\n\n" ); # I prefer, no=
 need for ~
>=20
> or
>=20
>  =C2=A0 =C2=A0 print( "Drive $Drive:" ~ Q'\' ~ " dismounted\n\n" );
>=20
> -y

Hi Yary,

The single and double quote thing in Windows drive me a
bit insane.

I do the `Str ~ weird char` thing as it is easier for me
to under stand that I am combining string unfriendly
parts.  And I don't have to remember who escapes what.
I may have to give up the practice with Windows


I do not understand the  Q'\'
Windows
K:\Windows\NtUtil>perl6 -e "my $Drive =3D \"B\";print( \"Drive $Drive:\" =
~=20
Q'\' ~ \" dismounted\n\n\" );"

Drive B:\ dismounted



Linux
$ perl6 -e 'my $Drive =3D "B";print( "Drive $Drive:" ~ Q"\'" ~ "=20
dismounted\n\n\" );'
bash: syntax error near unexpected token `)'


Linux
$ perl6 -e 'my $Drive =3D "B"; print( "Drive $Drive\:\\ dismounted\n\n" )=
;'
Drive B:\ dismounted


Windows
K:\Windows\NtUtil>perl6 -e 'my $Drive =3D "B"; print( "Drive $Drive\:\\=20
dismounted
\n\n" );'
=3D=3D=3DSORRY!=3D=3D=3D Error while compiling -e
Unable to parse expression in single quotes; couldn't find final "'"=20
(correspond
ing starter was at line 1)
at -e:1
------> 'my<HERE><EOL>
     expecting any of:
         single quotes
         statement list
         term


Windows again escaping double quotes
K:\Windows\NtUtil>perl6 -e "my $Drive =3D \"B\"; print( \"Drive $Drive\:\=
\=20
dismounted\n\n\" );"
Drive B:\ dismounted


Thank you for the help!

-T



--=20
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Computers are like air conditioners.
They malfunction when you open windows
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0
perl6
12/2/2019 12:45:11 AM
--0000000000002dd8ff0598b02c72
Content-Type: text/plain; charset="UTF-8"

None of the examples in the earlier emails were on the command line. Please
only use the examples in my prior message in this thread inside a program
file. Using these on the command-line is outside the scope of what I want
to deal with here.

Windows quoting on the command line is enough of a headache that I use this
rule- double quotes only at the first and last character of an argument.
There's more to it... I don't want to spend lots of time on the arcana.

--0000000000002dd8ff0598b02c72
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>None of the examples in the earlier emails were on th=
e command line. Please only use the examples in my prior message in this th=
read inside a program file. Using these on the command-line is outside the =
scope of what I want to deal with here.</div><div><br></div><div>Windows qu=
oting on the command line is enough of a headache that I use this rule- dou=
ble quotes only at the first and last character of an argument. There&#39;s=
 more to it... I don&#39;t want to spend lots of time on the arcana.</div><=
/div>

--0000000000002dd8ff0598b02c72--
0
not
12/2/2019 3:28:14 AM
On 2019-12-01 19:28, yary wrote:
> None of the examples in the earlier emails were on the command line. 
> Please only use the examples in my prior message in this thread inside a 
> program file. Using these on the command-line is outside the scope of 
> what I want to deal with here.
> 
> Windows quoting on the command line is enough of a headache that I use 
> this rule- double quotes only at the first and last character of an 
> argument. There's more to it... I don't want to spend lots of time on 
> the arcana.

Hi Yary,

I have about had it with Windows one liners.

<yary1.pl6>
my Str $Drive = "B";
print( "Drive $Drive:\\ dismounted\n\n" ); # I prefer, no need for ~
print( "Drive $Drive:" ~ Q'\' ~ " dismounted\n\n" );
</yary1.pl6>


K:\Windows\NtUtil>perl6 yary1.pl6
Drive B:\ dismounted

Drive B:\ dismounted

Joy.


What is the world is the Q doing in Q'\'?

Thank you for the help!

-T
0
perl6
12/2/2019 10:06:25 AM
--00000000000090c0f20598b9e031
Content-Type: text/plain; charset="UTF-8"

On Mon, Dec 2, 2019 at 11:07 AM ToddAndMargo via perl6-users <
perl6-users@perl.org> wrote:

>
> What is the world is the Q doing in Q'\'?
>

  https://docs.perl6.org/language/quoting

  It would be clearer to write it as Q[\], I guess.


Eirik

--00000000000090c0f20598b9e031
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><div class=3D"gmail_quote"><div=
 dir=3D"ltr" class=3D"gmail_attr">On Mon, Dec 2, 2019 at 11:07 AM ToddAndMa=
rgo via perl6-users &lt;<a href=3D"mailto:perl6-users@perl.org">perl6-users=
@perl.org</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex"><br>
What is the world is the Q doing in Q&#39;\&#39;?<br></blockquote><div><br>=
</div><div>=C2=A0 <a href=3D"https://docs.perl6.org/language/quoting">https=
://docs.perl6.org/language/quoting</a></div><div><br></div><div>=C2=A0 It w=
ould be clearer to write it as Q[\], I guess.</div><div><br></div><div><br>=
</div><div>Eirik<br></div></div></div>

--00000000000090c0f20598b9e031--
0
sidhekin
12/2/2019 3:02:54 PM
On 2019-12-02 07:02, The Sidhekin wrote:
>=20
> On Mon, Dec 2, 2019 at 11:07 AM ToddAndMargo via perl6-users=20
> <perl6-users@perl.org <mailto:perl6-users@perl.org>> wrote:
>=20
>=20
>     What is the world is the Q doing in Q'\'?
>=20
>=20
> https://docs.perl6.org/language/quoting
>=20
>  =C2=A0 It would be clearer to write it as Q[\], I guess.
>=20
>=20
> Eirik


Ah Ha!  A workaround to an obvious bug in the
Windows version.

Thank you!
0
perl6
12/3/2019 1:41:58 AM
On 2019-12-02 07:02, The Sidhekin wrote:
>=20
> On Mon, Dec 2, 2019 at 11:07 AM ToddAndMargo via perl6-users=20
> <perl6-users@perl.org <mailto:perl6-users@perl.org>> wrote:
>=20
>=20
>     What is the world is the Q doing in Q'\'?
>=20
>=20
> https://docs.perl6.org/language/quoting
>=20
>  =C2=A0 It would be clearer to write it as Q[\], I guess.
>=20
>=20
> Eirik

Hi Eirik,

Bug or feature?

Seems to me there is a bug here that

     rakudo-star-2019.03-x86_64 (JIT).msi

is trying to interpret things inside single
quotes.  Single quotes is suppose to mean to
take it literally and no escape interpretations.

And it is only the Windows version.  In the
Linux version, single quote do what they
are suppose to do.

I would report it to the bug reporter but I am not
willing to deal with the guard dog.  Maybe if
any developers are reading this, they would take it
up.

-T
0
perl6
12/3/2019 1:52:57 AM
--0000000000006c7a480598c828cc
Content-Type: text/plain; charset="UTF-8"

i'm on linux and single quotes behave like they're supposed to, and only
escape a single quote with a backslash. Are you sure the issue you're
having isn't with the command line or something?

On Tue, Dec 3, 2019 at 3:55 AM ToddAndMargo via perl6-users <
perl6-users@perl.org> wrote:

> On 2019-12-02 07:02, The Sidhekin wrote:
> >
> > On Mon, Dec 2, 2019 at 11:07 AM ToddAndMargo via perl6-users
> > <perl6-users@perl.org <mailto:perl6-users@perl.org>> wrote:
> >
> >
> >     What is the world is the Q doing in Q'\'?
> >
> >
> > https://docs.perl6.org/language/quoting
> >
> >    It would be clearer to write it as Q[\], I guess.
> >
> >
> > Eirik
>
> Hi Eirik,
>
> Bug or feature?
>
> Seems to me there is a bug here that
>
>      rakudo-star-2019.03-x86_64 (JIT).msi
>
> is trying to interpret things inside single
> quotes.  Single quotes is suppose to mean to
> take it literally and no escape interpretations.
>
> And it is only the Windows version.  In the
> Linux version, single quote do what they
> are suppose to do.
>
> I would report it to the bug reporter but I am not
> willing to deal with the guard dog.  Maybe if
> any developers are reading this, they would take it
> up.
>
> -T
>

--0000000000006c7a480598c828cc
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">i&#39;m on linux and single quotes behave like they&#39;re=
 supposed to, and only escape a single quote with a backslash. Are you sure=
 the issue you&#39;re having isn&#39;t with the command line or something?<=
br></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_att=
r">On Tue, Dec 3, 2019 at 3:55 AM ToddAndMargo via perl6-users &lt;<a href=
=3D"mailto:perl6-users@perl.org">perl6-users@perl.org</a>&gt; wrote:<br></d=
iv><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bord=
er-left:1px solid rgb(204,204,204);padding-left:1ex">On 2019-12-02 07:02, T=
he Sidhekin wrote:<br>
&gt; <br>
&gt; On Mon, Dec 2, 2019 at 11:07 AM ToddAndMargo via perl6-users <br>
&gt; &lt;<a href=3D"mailto:perl6-users@perl.org" target=3D"_blank">perl6-us=
ers@perl.org</a> &lt;mailto:<a href=3D"mailto:perl6-users@perl.org" target=
=3D"_blank">perl6-users@perl.org</a>&gt;&gt; wrote:<br>
&gt; <br>
&gt; <br>
&gt;=C2=A0 =C2=A0 =C2=A0What is the world is the Q doing in Q&#39;\&#39;?<b=
r>
&gt; <br>
&gt; <br>
&gt; <a href=3D"https://docs.perl6.org/language/quoting" rel=3D"noreferrer"=
 target=3D"_blank">https://docs.perl6.org/language/quoting</a><br>
&gt; <br>
&gt;=C2=A0 =C2=A0 It would be clearer to write it as Q[\], I guess.<br>
&gt; <br>
&gt; <br>
&gt; Eirik<br>
<br>
Hi Eirik,<br>
<br>
Bug or feature?<br>
<br>
Seems to me there is a bug here that<br>
<br>
=C2=A0 =C2=A0 =C2=A0rakudo-star-2019.03-x86_64 (JIT).msi<br>
<br>
is trying to interpret things inside single<br>
quotes.=C2=A0 Single quotes is suppose to mean to<br>
take it literally and no escape interpretations.<br>
<br>
And it is only the Windows version.=C2=A0 In the<br>
Linux version, single quote do what they<br>
are suppose to do.<br>
<br>
I would report it to the bug reporter but I am not<br>
willing to deal with the guard dog.=C2=A0 Maybe if<br>
any developers are reading this, they would take it<br>
up.<br>
<br>
-T<br>
</blockquote></div>

--0000000000006c7a480598c828cc--
0
rabbiveesh
12/3/2019 8:05:11 AM
>> On Tue, Dec 3, 2019 at 3:55 AM ToddAndMargo via perl6-users 
>> <perl6-users@perl.org <mailto:perl6-users@perl.org>> wrote:
>> 
>>     On 2019-12-02 07:02, The Sidhekin wrote:
>>      >
>>      > On Mon, Dec 2, 2019 at 11:07 AM ToddAndMargo via perl6-users
>>      > <perl6-users@perl.org <mailto:perl6-users@perl.org>
>>     <mailto:perl6-users@perl.org <mailto:perl6-users@perl.org>>> wrote:
>>      >
>>      >
>>      >     What is the world is the Q doing in Q'\'?
>>      >
>>      >
>>      > https://docs.perl6.org/language/quoting
>>      >
>>      >    It would be clearer to write it as Q[\], I guess.
>>      >
>>      >
>>      > Eirik
>> 
>>     Hi Eirik,
>> 
>>     Bug or feature?
>> 
>>     Seems to me there is a bug here that
>> 
>>           rakudo-star-2019.03-x86_64 (JIT).msi
>> 
>>     is trying to interpret things inside single
>>     quotes.  Single quotes is suppose to mean to
>>     take it literally and no escape interpretations.
>> 
>>     And it is only the Windows version.  In the
>>     Linux version, single quote do what they
>>     are suppose to do.
>> 
>>     I would report it to the bug reporter but I am not
>>     willing to deal with the guard dog.  Maybe if
>>     any developers are reading this, they would take it
>>     up.
>> 
>>     -T
>> 

On 2019-12-03 00:05, Veesh Goldman wrote:
> i'm on linux and single quotes behave like they're supposed to, and only 
> escape a single quote with a backslash. Are you sure the issue you're 
> having isn't with the command line or something?
> 

Hi Veesh,

This is from a pl6 file, not the command line.

-T


-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Computers are like air conditioners.
They malfunction when you open windows
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0
perl6
12/3/2019 10:41:18 AM
--00000000000040c4ff0598cedc08
Content-Type: text/plain; charset="UTF-8"

>Seems to me there is a bug here that
>
>     rakudo-star-2019.03-x86_64 (JIT).msi
>
>is trying to interpret things inside single quotes.

If you can post a file that does that, I'll eat my hat!

here's a little recap of the basic quoting, which does exactly the same in
recent perl6 and decade-plus-old perl 5.6-ish

bash-3.2$ *cat perl-quotes*

my $name = 'mud';
print 'single quote \\ \" \' \[\] \n single name is $name', "\n";
print "double quote \\ \" \' \[\] \n double name is $name", "\n";

print q[q bracket \\ \" \' \[\] \n q bracket name is $name],  "\n";
print qq[qq bracket \\ \" \' \[\] \n qq bracket name is $name],"\n";

# Can use quote instead of brackets- but most folks don't
print q"q double \\ \" \' \[\] \n q double name is $name",   "\n";

bash-3.2$ *perl perl-quotes ; # Classic perl*
single quote \ \" ' \[\] \n single name is $name
double quote \ " ' []
 double name is mud
q bracket \ \" \' [] \n q bracket name is $name
qq bracket \ " ' []
 qq bracket name is mud
q double \ " \' \[\] \n q double name is $name
bash-3.2$ *perl6 perl-quotes ; # Raku*
single quote \ \" ' \[\] \n single name is $name
double quote \ " ' []
 double name is mud
q bracket \ \" \' [] \n q bracket name is $name
qq bracket \ " ' []
 qq bracket name is mud
q double \ " \' \[\] \n q double name is $name

Inside 'single quotes' or q[q string] backslash only has special meaning ,
when escaping the string delimiter - note that ' \' ' evaluates to a single
quote without the backslash, but q[ \' ] keeps the backslash.

Variables only interpolated in the "double quote" qq[qq string] forms.

The big Q[string] or Q'string' that Raku has is an extension of those q, qq
forms. It doesn't have any escapes at all. I'm not posting an example
because I have to get back to work, feel free to experiment!


-y


On Tue, Dec 3, 2019 at 5:48 AM ToddAndMargo via perl6-users <
perl6-users@perl.org> wrote:

> >> On Tue, Dec 3, 2019 at 3:55 AM ToddAndMargo via perl6-users
> >> <perl6-users@perl.org <mailto:perl6-users@perl.org>> wrote:
> >>
> >>     On 2019-12-02 07:02, The Sidhekin wrote:
> >>      >
> >>      > On Mon, Dec 2, 2019 at 11:07 AM ToddAndMargo via perl6-users
> >>      > <perl6-users@perl.org <mailto:perl6-users@perl.org>
> >>     <mailto:perl6-users@perl.org <mailto:perl6-users@perl.org>>> wrote:
> >>      >
> >>      >
> >>      >     What is the world is the Q doing in Q'\'?
> >>      >
> >>      >
> >>      > https://docs.perl6.org/language/quoting
> >>      >
> >>      >    It would be clearer to write it as Q[\], I guess.
> >>      >
> >>      >
> >>      > Eirik
> >>
> >>     Hi Eirik,
> >>
> >>     Bug or feature?
> >>
> >>     Seems to me there is a bug here that
> >>
> >>           rakudo-star-2019.03-x86_64 (JIT).msi
> >>
> >>     is trying to interpret things inside single
> >>     quotes.  Single quotes is suppose to mean to
> >>     take it literally and no escape interpretations.
> >>
> >>     And it is only the Windows version.  In the
> >>     Linux version, single quote do what they
> >>     are suppose to do.
> >>
> >>     I would report it to the bug reporter but I am not
> >>     willing to deal with the guard dog.  Maybe if
> >>     any developers are reading this, they would take it
> >>     up.
> >>
> >>     -T
> >>
>
> On 2019-12-03 00:05, Veesh Goldman wrote:
> > i'm on linux and single quotes behave like they're supposed to, and only
> > escape a single quote with a backslash. Are you sure the issue you're
> > having isn't with the command line or something?
> >
>
> Hi Veesh,
>
> This is from a pl6 file, not the command line.
>
> -T
>
>
> --
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Computers are like air conditioners.
> They malfunction when you open windows
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>

--00000000000040c4ff0598cedc08
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr">&gt;See=
ms to me there is a bug here that<br>&gt;<br>&gt; =C2=A0 =C2=A0 rakudo-star=
-2019.03-x86_64 (JIT).msi<br>&gt;<br>&gt;is trying to interpret things insi=
de single=C2=A0quotes.=C2=A0=C2=A0</div><div dir=3D"ltr"><br></div><div>If =
you can post a file that does that, I&#39;ll eat my hat!</div><div><br></di=
v><div>here&#39;s a little recap of the basic quoting, which does exactly t=
he same in recent perl6 and decade-plus-old perl 5.6-ish</div><div><br></di=
v><div><div><font face=3D"monospace">bash-3.2$ <i>cat perl-quotes</i>=C2=A0=
</font></div><div><font face=3D"monospace"><br></font></div><div><font face=
=3D"monospace">my $name =3D &#39;mud&#39;;</font></div><div><font face=3D"m=
onospace">print &#39;single quote \\ \&quot; \&#39; \[\] \n single name is =
$name&#39;, &quot;\n&quot;;</font></div><div><font face=3D"monospace">print=
 &quot;double quote \\ \&quot; \&#39; \[\] \n double name is $name&quot;, &=
quot;\n&quot;;</font></div><div><font face=3D"monospace"><br></font></div><=
div><font face=3D"monospace">print q[q bracket \\ \&quot; \&#39; \[\] \n q =
bracket name is $name], =C2=A0&quot;\n&quot;;</font></div><div><font face=
=3D"monospace">print qq[qq bracket \\ \&quot; \&#39; \[\] \n qq bracket nam=
e is $name],&quot;\n&quot;;</font></div><div><font face=3D"monospace"><br><=
/font></div><div><font face=3D"monospace"># Can use quote instead of bracke=
ts- but most folks don&#39;t</font></div><div><font face=3D"monospace">prin=
t q&quot;q double \\ \&quot; \&#39; \[\] \n q double name is $name&quot;, =
=C2=A0 &quot;\n&quot;;</font></div><div><font face=3D"monospace"><br></font=
></div><div><font face=3D"monospace">bash-3.2$ <i>perl perl-quotes ; # Clas=
sic perl</i></font></div><div><font face=3D"monospace">single quote \ \&quo=
t; &#39; \[\] \n single name is $name</font></div><div><font face=3D"monosp=
ace">double quote \ &quot; &#39; []=C2=A0</font></div><div><font face=3D"mo=
nospace">=C2=A0double name is mud</font></div><div><font face=3D"monospace"=
>q bracket \ \&quot; \&#39; [] \n q bracket name is $name</font></div><div>=
<font face=3D"monospace">qq bracket \ &quot; &#39; []=C2=A0</font></div><di=
v><font face=3D"monospace">=C2=A0qq bracket name is mud</font></div><div><f=
ont face=3D"monospace">q double \ &quot; \&#39; \[\] \n q double name is $n=
ame</font></div><div><font face=3D"monospace">bash-3.2$ <i>perl6 perl-quote=
s ; # Raku</i></font></div><div><font face=3D"monospace">single quote \ \&q=
uot; &#39; \[\] \n single name is $name</font></div><div><font face=3D"mono=
space">double quote \ &quot; &#39; []=C2=A0</font></div><div><font face=3D"=
monospace">=C2=A0double name is mud</font></div><div><font face=3D"monospac=
e">q bracket \ \&quot; \&#39; [] \n q bracket name is $name</font></div><di=
v><font face=3D"monospace">qq bracket \ &quot; &#39; []=C2=A0</font></div><=
div><font face=3D"monospace">=C2=A0qq bracket name is mud</font></div><div>=
<font face=3D"monospace">q double \ &quot; \&#39; \[\] \n q double name is =
$name</font></div></div><div dir=3D"ltr"><br></div><div>Inside &#39;single =
quotes&#39; or q[q string] backslash only has special meaning , when escapi=
ng the string delimiter - note that &#39; \&#39; &#39; evaluates to a singl=
e quote without the backslash, but q[ \&#39; ] keeps the backslash.</div><d=
iv><br></div><div>Variables only interpolated in the &quot;double quote&quo=
t; qq[qq string] forms.</div><div><br></div><div>The big Q[string] or Q&#39=
;string&#39; that Raku has is an extension of those q, qq forms. It doesn&#=
39;t have any escapes at all. I&#39;m not posting an example because I have=
 to get back to work, feel free to experiment!</div><div><br></div><div dir=
=3D"ltr"><br clear=3D"all"><div><div dir=3D"ltr" class=3D"gmail_signature">=
-y<br></div></div><br></div></div></div></div><br><div class=3D"gmail_quote=
"><div dir=3D"ltr" class=3D"gmail_attr">On Tue, Dec 3, 2019 at 5:48 AM Todd=
AndMargo via perl6-users &lt;<a href=3D"mailto:perl6-users@perl.org">perl6-=
users@perl.org</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" st=
yle=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:sol=
id;border-left-color:rgb(204,204,204);padding-left:1ex">&gt;&gt; On Tue, De=
c 3, 2019 at 3:55 AM ToddAndMargo via perl6-users <br>
&gt;&gt; &lt;<a href=3D"mailto:perl6-users@perl.org" target=3D"_blank">perl=
6-users@perl.org</a> &lt;mailto:<a href=3D"mailto:perl6-users@perl.org" tar=
get=3D"_blank">perl6-users@perl.org</a>&gt;&gt; wrote:<br>
&gt;&gt; <br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0On 2019-12-02 07:02, The Sidhekin wrote:<br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0 &gt;<br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0 &gt; On Mon, Dec 2, 2019 at 11:07 AM ToddAndMa=
rgo via perl6-users<br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0 &gt; &lt;<a href=3D"mailto:perl6-users@perl.or=
g" target=3D"_blank">perl6-users@perl.org</a> &lt;mailto:<a href=3D"mailto:=
perl6-users@perl.org" target=3D"_blank">perl6-users@perl.org</a>&gt;<br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0&lt;mailto:<a href=3D"mailto:perl6-users@perl.o=
rg" target=3D"_blank">perl6-users@perl.org</a> &lt;mailto:<a href=3D"mailto=
:perl6-users@perl.org" target=3D"_blank">perl6-users@perl.org</a>&gt;&gt;&g=
t; wrote:<br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0 &gt;<br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0 &gt;<br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0What is the world is t=
he Q doing in Q&#39;\&#39;?<br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0 &gt;<br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0 &gt;<br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0 &gt; <a href=3D"https://docs.perl6.org/languag=
e/quoting" rel=3D"noreferrer" target=3D"_blank">https://docs.perl6.org/lang=
uage/quoting</a><br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0 &gt;<br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0 &gt;=C2=A0 =C2=A0 It would be clearer to write=
 it as Q[\], I guess.<br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0 &gt;<br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0 &gt;<br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0 &gt; Eirik<br>
&gt;&gt; <br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0Hi Eirik,<br>
&gt;&gt; <br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0Bug or feature?<br>
&gt;&gt; <br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0Seems to me there is a bug here that<br>
&gt;&gt; <br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0rakudo-star-2019.03-x86_64=
 (JIT).msi<br>
&gt;&gt; <br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0is trying to interpret things inside single<br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0quotes.=C2=A0 Single quotes is suppose to mean =
to<br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0take it literally and no escape interpretations=
..<br>
&gt;&gt; <br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0And it is only the Windows version.=C2=A0 In th=
e<br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0Linux version, single quote do what they<br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0are suppose to do.<br>
&gt;&gt; <br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0I would report it to the bug reporter but I am =
not<br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0willing to deal with the guard dog.=C2=A0 Maybe=
 if<br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0any developers are reading this, they would tak=
e it<br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0up.<br>
&gt;&gt; <br>
&gt;&gt;=C2=A0 =C2=A0 =C2=A0-T<br>
&gt;&gt; <br>
<br>
On 2019-12-03 00:05, Veesh Goldman wrote:<br>
&gt; i&#39;m on linux and single quotes behave like they&#39;re supposed to=
, and only <br>
&gt; escape a single quote with a backslash. Are you sure the issue you&#39=
;re <br>
&gt; having isn&#39;t with the command line or something?<br>
&gt; <br>
<br>
Hi Veesh,<br>
<br>
This is from a pl6 file, not the command line.<br>
<br>
-T<br>
<br>
<br>
-- <br>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
Computers are like air conditioners.<br>
They malfunction when you open windows<br>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
</blockquote></div>

--00000000000040c4ff0598cedc08--
0
not
12/3/2019 4:04:57 PM

On 2019-12-03 08:04, yary wrote:
>  >Seems to me there is a bug here that
>  >
>  > =C2=A0 =C2=A0 rakudo-star-2019.03-x86_64 (JIT).msi
>  >
>  >is trying to interpret things inside single=C2=A0quotes.
>=20
> If you can post a file that does that, I'll eat my hat!
>=20
> here's a little recap of the basic quoting, which does exactly the same=
=20
> in recent perl6 and decade-plus-old perl 5.6-ish
>=20
> bash-3.2$ /cat perl-quotes/
>=20
> my $name =3D 'mud';
> print 'single quote \\ \" \' \[\] \n single name is $name', "\n";
> print "double quote \\ \" \' \[\] \n double name is $name", "\n";
>=20
> print q[q bracket \\ \" \' \[\] \n q bracket name is $name], =C2=A0"\n"=
;
> print qq[qq bracket \\ \" \' \[\] \n qq bracket name is $name],"\n";
>=20
> # Can use quote instead of brackets- but most folks don't
> print q"q double \\ \" \' \[\] \n q double name is $name", =C2=A0 "\n";=

>=20
> bash-3.2$ /perl perl-quotes ; # Classic perl/
> single quote \ \" ' \[\] \n single name is $name
> double quote \ " ' []
>  =C2=A0double name is mud
> q bracket \ \" \' [] \n q bracket name is $name
> qq bracket \ " ' []
>  =C2=A0qq bracket name is mud
> q double \ " \' \[\] \n q double name is $name
> bash-3.2$ /perl6 perl-quotes ; # Raku/
> single quote \ \" ' \[\] \n single name is $name
> double quote \ " ' []
>  =C2=A0double name is mud
> q bracket \ \" \' [] \n q bracket name is $name
> qq bracket \ " ' []
>  =C2=A0qq bracket name is mud
> q double \ " \' \[\] \n q double name is $name
>=20
> Inside 'single quotes' or q[q string] backslash only has special meanin=
g=20
> , when escaping the string delimiter - note that ' \' ' evaluates to a =

> single quote without the backslash, but q[ \' ] keeps the backslash.
>=20
> Variables only interpolated in the "double quote" qq[qq string] forms.
>=20
> The big Q[string] or Q'string' that Raku has is an extension of those q=
,=20
> qq forms. It doesn't have any escapes at all. I'm not posting an exampl=
e=20
> because I have to get back to work, feel free to experiment!
>=20
>=20
> -y
>=20
>=20


Hi Yary,

$ perl6 -e "say '\'";
=3D=3D=3DSORRY!=3D=3D=3D Error while compiling -e
Unable to parse expression in single quotes; couldn't find final "'"=20
(corresponding starter was at line 1)
at -e:1
------> say '\'=E2=8F=8F<EOL>
     expecting any of:
         argument list
         single quotes
         term


https://docs.raku.org/language/quoting#index-entry-quote_q-quote_'_'-Esca=
ping:_q

      "The backslash itself can be escaped, too, as in the
      third example above. *The usual form is '=E2=80=A6'* or q
      followed by a delimiter, but it's also available
      as an adverb on Q, as in the fifth and last example above.

$ p6 "say '\'";  is not following the *"The usual form is '=E2=80=A6'"* i=
n the=20
manual.  EVERYTHING inside single quotes is suppose to be literal.=20
NOTHING is to be interpreted.

Would you like salt and pepper with your hat?

And if I am wrong, how does hat taste?  Typically
with me, it is egg all over my face.

Thank you for the help!

-T

What???  Me read the manual?  For beginners, the manual
really stinks, but I do consult it a lot.  Sometimes
they will slip an example in that gets past the
IEEE-eese.
0
perl6
12/4/2019 12:44:00 AM
On 2019-12-03 17:31, Paul Procacci wrote:
> When a string is specified in single quotes, perl6 (or any other 
> language that I'm aware of) will not evaluate or interpret an escape 
> character EXCEPT when the escape is follow'd by a single quote (') or 
> backslash(\).
> These HAVE to be escaped and the interpreter HAS to account for it.

Hi Paul,

I am not finding that to be the case.  Well maybe not Perl 5.

$ bash -c "echo '\'"
\

$ echo '\\\'
\\\

$ echo '\\'
\\

$ echo '\'
\


   If it is on purpose and not a "feature" in Perl 6, then
the documentation should state that single quotes will
have interpretations inside of them in certain cases.


Ahh Perl 5 is a pain in the butt backslash wise!

$ perl -e "CORE::say '\\\\';"
\

And I am seeing in
https://docs.perl6.org/language/quoting
      Literal strings: Q
      Q[A literal string]

Is the way I have been using single quotes.

So the rule is single quotes are literal, unless a backslash
in included, then use Q

Thank you for the help!

-T
0
perl6
12/4/2019 2:03:13 AM
My keeper file on the subject;


perl6: literal quotes:

Reference(s):
     https://docs.perl6.org/language/quoting


Everything inside single quotes ("''") is literal, EXCEPT if a
backslash (escape) is involved.  In that case use Q or a
double backslash (escape the escape)

     $ p6 'say "Drive B:" ~ Q[\] ~ " is dismounted";'
     Drive B:\ is dismounted

     $ p6 'say "Drive B:" ~ Q[\abc\] ~ " is dismounted";'
     Drive B:\abc\ is dismounted

     $ p6 'say "Drive B:" ~ '\\' ~ " is dismounted";'
     Drive B: is dismounted

     $ p6 'say "Drive B:\\ is dismounted";'
     Drive B:\ is dismounted
0
perl6
12/4/2019 2:15:35 AM
--0000000000001b5d3b0598d83826
Content-Type: text/plain; charset="UTF-8"

echo isn't a great example at all.  echo is both OS and SHELL specific.
Not only that, echo has argv to work with; each with it's own terminating
'\0'.
It absolutely can be quite literal, though that doesn't stop the
implementors from doing whatever they want.

Here's a snippet from my own OS's `man echo`:

     "Most shells provide a builtin echo command which tends to differ from
     this utility in the treatment of options and backslashes.  Consult the
     builtin(1) manual page."


Here's the cruft of it ......

With a single quoted string ..... containing a single quote itself  .......
in any given interpreted language ..... with no EOL or EOF in sight ....
How would you let the interpreter know your done?
The answer:  You can't without escaping the single quote.

Some more examples I wrote up.
You'll note, they all use single quotes, yet they all interpret as they
absolutely should.

Example Perl 5:
---------------------------------
# perl -e "print '\''" ;
'
# perl -e "print '\\'" ;
\
# perl -e "print '\a'" ;
\a


Example PHP 7.3:
---------------------------------
# php -r "print '\'';"
'
# php -r "print '\\';"
\
# php -r "print '\a';"
\a

Example python3.6  **unique**:
---------------------------------------
# python3.6 -c "print('\'')"
'
# python3.6 -c "print('\\')"
\
# python3.6 -c "print('\a')" | hexdump -oc | head -1
0000000  005007


On Tue, Dec 3, 2019 at 9:04 PM ToddAndMargo via perl6-users <
perl6-users@perl.org> wrote:

> On 2019-12-03 17:31, Paul Procacci wrote:
> > When a string is specified in single quotes, perl6 (or any other
> > language that I'm aware of) will not evaluate or interpret an escape
> > character EXCEPT when the escape is follow'd by a single quote (') or
> > backslash(\).
> > These HAVE to be escaped and the interpreter HAS to account for it.
>
> Hi Paul,
>
> I am not finding that to be the case.  Well maybe not Perl 5.
>
> $ bash -c "echo '\'"
> \
>
> $ echo '\\\'
> \\\
>
> $ echo '\\'
> \\
>
> $ echo '\'
> \
>
>
>    If it is on purpose and not a "feature" in Perl 6, then
> the documentation should state that single quotes will
> have interpretations inside of them in certain cases.
>
>
> Ahh Perl 5 is a pain in the butt backslash wise!
>
> $ perl -e "CORE::say '\\\\';"
> \
>
> And I am seeing in
> https://docs.perl6.org/language/quoting
>       Literal strings: Q
>       Q[A literal string]
>
> Is the way I have been using single quotes.
>
> So the rule is single quotes are literal, unless a backslash
> in included, then use Q
>
> Thank you for the help!
>
> -T
>


-- 
__________________

:(){ :|:& };:

--0000000000001b5d3b0598d83826
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>echo isn&#39;t a great example at all.=C2=A0 echo is =
both OS and SHELL specific.<br></div><div>Not only that, echo has argv to w=
ork with; each with it&#39;s own terminating &#39;\0&#39;.</div><div>It abs=
olutely can be quite literal, though that doesn&#39;t stop the implementors=
 from doing whatever they want.</div><div><br></div><div>Here&#39;s a snipp=
et from my own OS&#39;s `man echo`:</div><div><br></div><div>=C2=A0 =C2=A0=
=C2=A0 &quot;Most shells provide a builtin echo command which tends to diff=
er from<br>=C2=A0 =C2=A0 =C2=A0this utility in the treatment of options and=
 backslashes.=C2=A0 Consult the<br>=C2=A0 =C2=A0 =C2=A0builtin(1) manual pa=
ge.&quot;</div><div><br></div><div><br></div><div>Here&#39;s the cruft of i=
t ......</div><div><br></div><div>With a single quoted string ..... contain=
ing a single quote itself=C2=A0 ....... in any given interpreted language .=
..... with no EOL or EOF in sight .... <br></div><div>How would you let the =
interpreter know your done?</div><div>The answer:=C2=A0 You can&#39;t witho=
ut escaping the single quote.</div><div><br></div><div>Some more examples I=
 wrote up.</div><div>You&#39;ll note, they all use single quotes, yet they =
all interpret as they absolutely should.<br></div><div><br><div>Example Per=
l 5:</div><div>---------------------------------<br></div><div># perl -e &q=
uot;print &#39;\&#39;&#39;&quot; ;<br>&#39;</div><div># perl -e &quot;print=
 &#39;\\&#39;&quot; ;<br>\</div><div># perl -e &quot;print &#39;\a&#39;&quo=
t; ;<br>\a</div><div><br></div><div>
<div><br></div><div>Example PHP 7.3:</div><div>----------------------------=
-----<br>
# php -r &quot;print &#39;\&#39;&#39;;&quot;

</div><div>&#39;</div>

</div><div># php -r &quot;print &#39;\\&#39;;&quot;<br>\</div><div># php -r=
 &quot;print &#39;\a&#39;;&quot;<br>\a</div><div><br></div><div>Example pyt=
hon3.6=C2=A0 **unique**:</div><div>---------------------------------------<=
br></div><div># python3.6 -c &quot;print(&#39;\&#39;&#39;)&quot;<br>&#39;</=
div><div># python3.6 -c &quot;print(&#39;\\&#39;)&quot;<br>\<br># python3.6=
 -c &quot;print(&#39;\a&#39;)&quot; | hexdump -oc | head -1<br>0000000 =C2=
=A0005007</div><div><br></div></div></div><br><div class=3D"gmail_quote"><d=
iv dir=3D"ltr" class=3D"gmail_attr">On Tue, Dec 3, 2019 at 9:04 PM ToddAndM=
argo via perl6-users &lt;<a href=3D"mailto:perl6-users@perl.org">perl6-user=
s@perl.org</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex">On 2019-12-03 17:31, Paul Procacci wrote:<br>
&gt; When a string is specified in single quotes, perl6 (or any other <br>
&gt; language that I&#39;m aware of) will not evaluate or interpret an esca=
pe <br>
&gt; character EXCEPT when the escape is follow&#39;d by a single quote (&#=
39;) or <br>
&gt; backslash(\).<br>
&gt; These HAVE to be escaped and the interpreter HAS to account for it.<br=
>
<br>
Hi Paul,<br>
<br>
I am not finding that to be the case.=C2=A0 Well maybe not Perl 5.<br>
<br>
$ bash -c &quot;echo &#39;\&#39;&quot;<br>
\<br>
<br>
$ echo &#39;\\\&#39;<br>
\\\<br>
<br>
$ echo &#39;\\&#39;<br>
\\<br>
<br>
$ echo &#39;\&#39;<br>
\<br>
<br>
<br>
=C2=A0 =C2=A0If it is on purpose and not a &quot;feature&quot; in Perl 6, t=
hen<br>
the documentation should state that single quotes will<br>
have interpretations inside of them in certain cases.<br>
<br>
<br>
Ahh Perl 5 is a pain in the butt backslash wise!<br>
<br>
$ perl -e &quot;CORE::say &#39;\\\\&#39;;&quot;<br>
\<br>
<br>
And I am seeing in<br>
<a href=3D"https://docs.perl6.org/language/quoting" rel=3D"noreferrer" targ=
et=3D"_blank">https://docs.perl6.org/language/quoting</a><br>
=C2=A0 =C2=A0 =C2=A0 Literal strings: Q<br>
=C2=A0 =C2=A0 =C2=A0 Q[A literal string]<br>
<br>
Is the way I have been using single quotes.<br>
<br>
So the rule is single quotes are literal, unless a backslash<br>
in included, then use Q<br>
<br>
Thank you for the help!<br>
<br>
-T<br>
</blockquote></div><br clear=3D"all"><br>-- <br><div dir=3D"ltr" class=3D"g=
mail_signature">__________________<br><br>:(){ :|:&amp; };:</div>

--0000000000001b5d3b0598d83826--
0
pprocacci
12/4/2019 3:14:54 AM
On 2019-12-03 19:14, Paul Procacci wrote:
> echo isn't a great example at all.=C2=A0 echo is both OS and SHELL spec=
ific.
> Not only that, echo has argv to work with; each with it's own=20
> terminating '\0'.
> It absolutely can be quite literal, though that doesn't stop the=20
> implementors from doing whatever they want.
>=20
> Here's a snippet from my own OS's `man echo`:
>=20
>  =C2=A0 =C2=A0=C2=A0 "Most shells provide a builtin echo command which =
tends to differ from
>  =C2=A0 =C2=A0 =C2=A0this utility in the treatment of options and backs=
lashes.=C2=A0 Consult the
>  =C2=A0 =C2=A0 =C2=A0builtin(1) manual page."
>=20
>=20
> Here's the cruft of it ......
>=20
> With a single quoted string ..... containing a single quote itself =20
> ....... in any given interpreted language ..... with no EOL or EOF in=20
> sight ....
> How would you let the interpreter know your done?
> The answer:=C2=A0 You can't without escaping the single quote.
>=20
> Some more examples I wrote up.
> You'll note, they all use single quotes, yet they all interpret as they=
=20
> absolutely should.
>=20
> Example Perl 5:
> ---------------------------------
> # perl -e "print '\''" ;
> '
> # perl -e "print '\\'" ;
> \
> # perl -e "print '\a'" ;
> \a
>=20
>=20
> Example PHP 7.3:
> ---------------------------------
> # php -r "print '\'';"
> '
> # php -r "print '\\';"
> \
> # php -r "print '\a';"
> \a
>=20
> Example python3.6=C2=A0 **unique**:
> ---------------------------------------
> # python3.6 -c "print('\'')"
> '
> # python3.6 -c "print('\\')"
> \
> # python3.6 -c "print('\a')" | hexdump -oc | head -1
> 0000000 =C2=A0005007
>=20

You make a good point.

Bash language may be the exception then:


$ cat echo.sh
#!/usr/bin/bash
echo '\'

linuxutil]$ echo.sh
\


"echo" does not recognize interpretation unless you invoke
it with -e

$ echo -e '\\'
\
0
perl6
12/4/2019 5:43:30 AM
--0000000000001dfd3a0598e39291
Content-Type: text/plain; charset="UTF-8"

Requoting myself with emphasis

*> If you can post a file that does that, I'll eat my hat!*

show me an "exapmle.raku" file that the command "perl6 example.raku" won't
interpolate variables in Windows but will in Unix in a buggy way, and I'll
eat my hat. I'm not here to discuss command-line interpretation in DOS
cmd.exe vs Bourne-shell /bin/sh vs Bourne-again-shell /usr/local/bin/bash
etc.

-y


On Wed, Dec 4, 2019 at 12:47 AM ToddAndMargo via perl6-users <
perl6-users@perl.org> wrote:

> On 2019-12-03 19:14, Paul Procacci wrote:
> > echo isn't a great example at all.  echo is both OS and SHELL specific.
> > Not only that, echo has argv to work with; each with it's own
> > terminating '\0'.
> > It absolutely can be quite literal, though that doesn't stop the
> > implementors from doing whatever they want.
> >
> > Here's a snippet from my own OS's `man echo`:
> >
> >       "Most shells provide a builtin echo command which tends to differ
> from
> >       this utility in the treatment of options and backslashes.  Consult
> the
> >       builtin(1) manual page."
> >
> >
> > Here's the cruft of it ......
> >
> > With a single quoted string ..... containing a single quote itself
> > ....... in any given interpreted language ..... with no EOL or EOF in
> > sight ....
> > How would you let the interpreter know your done?
> > The answer:  You can't without escaping the single quote.
> >
> > Some more examples I wrote up.
> > You'll note, they all use single quotes, yet they all interpret as they
> > absolutely should.
> >
> > Example Perl 5:
> > ---------------------------------
> > # perl -e "print '\''" ;
> > '
> > # perl -e "print '\\'" ;
> > \
> > # perl -e "print '\a'" ;
> > \a
> >
> >
> > Example PHP 7.3:
> > ---------------------------------
> > # php -r "print '\'';"
> > '
> > # php -r "print '\\';"
> > \
> > # php -r "print '\a';"
> > \a
> >
> > Example python3.6  **unique**:
> > ---------------------------------------
> > # python3.6 -c "print('\'')"
> > '
> > # python3.6 -c "print('\\')"
> > \
> > # python3.6 -c "print('\a')" | hexdump -oc | head -1
> > 0000000  005007
> >
>
> You make a good point.
>
> Bash language may be the exception then:
>
>
> $ cat echo.sh
> #!/usr/bin/bash
> echo '\'
>
> linuxutil]$ echo.sh
> \
>
>
> "echo" does not recognize interpretation unless you invoke
> it with -e
>
> $ echo -e '\\'
> \
>

--0000000000001dfd3a0598e39291
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div><span style=3D"color:rgb(80,0,80)">Requoting myself w=
ith emphasis</span></div><div dir=3D"ltr"><span style=3D"color:rgb(80,0,80)=
"><br></span></div><div dir=3D"ltr"><span style=3D"color:rgb(80,0,80)"><i>&=
gt; If you can post a <b><u>file</u></b> that does that, I&#39;ll eat my ha=
t!</i></span><br style=3D"color:rgb(80,0,80)"><div><div dir=3D"ltr" class=
=3D"gmail_signature"><br></div><div class=3D"gmail_signature">show me an &q=
uot;exapmle.raku&quot; file that the command &quot;perl6 example.raku&quot;=
 won&#39;t interpolate variables in Windows but will in Unix in a buggy way=
, and I&#39;ll eat my hat. I&#39;m not here to discuss command-line interpr=
etation in DOS cmd.exe vs Bourne-shell /bin/sh vs Bourne-again-shell /usr/l=
ocal/bin/bash etc.</div><div dir=3D"ltr" class=3D"gmail_signature"><br></di=
v><div dir=3D"ltr" class=3D"gmail_signature">-y<br></div></div><br></div></=
div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On=
 Wed, Dec 4, 2019 at 12:47 AM ToddAndMargo via perl6-users &lt;<a href=3D"m=
ailto:perl6-users@perl.org">perl6-users@perl.org</a>&gt; wrote:<br></div><b=
lockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-le=
ft-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);pad=
ding-left:1ex">On 2019-12-03 19:14, Paul Procacci wrote:<br>
&gt; echo isn&#39;t a great example at all.=C2=A0 echo is both OS and SHELL=
 specific.<br>
&gt; Not only that, echo has argv to work with; each with it&#39;s own <br>
&gt; terminating &#39;\0&#39;.<br>
&gt; It absolutely can be quite literal, though that doesn&#39;t stop the <=
br>
&gt; implementors from doing whatever they want.<br>
&gt; <br>
&gt; Here&#39;s a snippet from my own OS&#39;s `man echo`:<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 =C2=A0=C2=A0 &quot;Most shells provide a builtin echo com=
mand which tends to differ from<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0this utility in the treatment of options and=
 backslashes.=C2=A0 Consult the<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0builtin(1) manual page.&quot;<br>
&gt; <br>
&gt; <br>
&gt; Here&#39;s the cruft of it ......<br>
&gt; <br>
&gt; With a single quoted string ..... containing a single quote itself=C2=
=A0 <br>
&gt; ....... in any given interpreted language ..... with no EOL or EOF in =
<br>
&gt; sight ....<br>
&gt; How would you let the interpreter know your done?<br>
&gt; The answer:=C2=A0 You can&#39;t without escaping the single quote.<br>
&gt; <br>
&gt; Some more examples I wrote up.<br>
&gt; You&#39;ll note, they all use single quotes, yet they all interpret as=
 they <br>
&gt; absolutely should.<br>
&gt; <br>
&gt; Example Perl 5:<br>
&gt; ---------------------------------<br>
&gt; # perl -e &quot;print &#39;\&#39;&#39;&quot; ;<br>
&gt; &#39;<br>
&gt; # perl -e &quot;print &#39;\\&#39;&quot; ;<br>
&gt; \<br>
&gt; # perl -e &quot;print &#39;\a&#39;&quot; ;<br>
&gt; \a<br>
&gt; <br>
&gt; <br>
&gt; Example PHP 7.3:<br>
&gt; ---------------------------------<br>
&gt; # php -r &quot;print &#39;\&#39;&#39;;&quot;<br>
&gt; &#39;<br>
&gt; # php -r &quot;print &#39;\\&#39;;&quot;<br>
&gt; \<br>
&gt; # php -r &quot;print &#39;\a&#39;;&quot;<br>
&gt; \a<br>
&gt; <br>
&gt; Example python3.6=C2=A0 **unique**:<br>
&gt; ---------------------------------------<br>
&gt; # python3.6 -c &quot;print(&#39;\&#39;&#39;)&quot;<br>
&gt; &#39;<br>
&gt; # python3.6 -c &quot;print(&#39;\\&#39;)&quot;<br>
&gt; \<br>
&gt; # python3.6 -c &quot;print(&#39;\a&#39;)&quot; | hexdump -oc | head -1=
<br>
&gt; 0000000 =C2=A0005007<br>
&gt; <br>
<br>
You make a good point.<br>
<br>
Bash language may be the exception then:<br>
<br>
<br>
$ cat echo.sh<br>
#!/usr/bin/bash<br>
echo &#39;\&#39;<br>
<br>
linuxutil]$ echo.sh<br>
\<br>
<br>
<br>
&quot;echo&quot; does not recognize interpretation unless you invoke<br>
it with -e<br>
<br>
$ echo -e &#39;\\&#39;<br>
\<br>
</blockquote></div>

--0000000000001dfd3a0598e39291--
0
not
12/4/2019 4:47:28 PM
On 2019-12-04 08:47, yary wrote:
> Requoting myself with emphasis
> 
> /> If you can post a *_file_* that does that, I'll eat my hat!/
> 
> show me an "exapmle.raku" file that the command "perl6 example.raku" 
> won't interpolate variables in Windows but will in Unix in a buggy way, 
> and I'll eat my hat. I'm not here to discuss command-line interpretation 
> in DOS cmd.exe vs Bourne-shell /bin/sh vs Bourne-again-shell 
> /usr/local/bin/bash etc.
> 
> -y

Hi Yary,

Oh it is consistent.  It was my misunderstanding
the '\' was not to be interpreted.  Your hat is
safe.   On the other hand, egg on my face, well,
lets say you get use to it.

:-)

-T

-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Computers are like air conditioners.
They malfunction when you open windows
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0
perl6
12/4/2019 5:07:53 PM
Reply: