Ok I 100% don't know after trying this out : my Buf $a = Buf.new(1,2,3); my Blob $b = Blob.new(4,5,6); $a ~= $b; say $a
And it worked fine so... I dunno. On Tue, 11 Feb 2020 at 11:00, Simon Proctor <simon.proc...@gmail.com> wrote: > I think the problem is IO::Socket.read() returns a Blob not a Buf. > > ~ has a Buf, Buf variant : > https://docs.raku.org/language/operators#infix_~ > > But not a Blob one. Buf does Blob but not vice versa. > > I think you need to transform the output from .read into a Buf if you want > to use the ~= how you want to. > > Would this work? > my Blob $read = Buf.new; > $read ~= Buf.new( $socket.read(1024) ); > > > On Tue, 11 Feb 2020 at 10:46, Kevin Pye <kevin....@gmail.com> wrote: > >> >> ~ works fine for concatenating Bufs; For example: >> >> my $a = Buf.new(1,2,3); >> my $b = $a ~ Buf.new(4,5,6) >> >> will assign correctly to $b. >> >> I can't work out what the problem is here, despite trying various >> combinations. Perhaps socket isn't really returning a Blob? >> >> Kevin. >> >> On Tue, 11 Feb 2020 at 21:01, JJ Merelo <jjmer...@gmail.com> wrote: >> >>> You are using ~, which stringifies. Bufs are not strings: you need to >>> decode them to concatenate it to a string. If what you want is to >>> concatenate the buffer, probably ,= will work (not sure about this, would >>> have to check), or any other operator that works on Positionals. >>> >>> JJ >>> >>> El mar., 11 feb. 2020 a las 10:56, David Santiago (<deman...@gmail.com>) >>> escribió: >>> >>>> A 11 de fevereiro de 2020 10:47:34 CET, David Santiago < >>>> deman...@gmail.com> escreveu: >>>> >A 11 de fevereiro de 2020 09:46:06 CET, David Santiago < >>>> deman...@gmail.com> escreveu: >>>> >> >>>> >>Hi! >>>> >> >>>> >>Can someone explain me why this doesn't work: >>>> >> >>>> >>my Blob $read; >>>> >>$read ~= $socket.read(1024); >>>> >> >>>> >>Dies with error: >>>> >> >>>> >>X::Buf::AsStr: Cannot use a Buf as a string, but you called the >>>> Stringy method on it >>>> >> >>>> >>This also doesn't work: >>>> >> >>>> >>my Buf $read; >>>> >>$read ~= $socket.read(1024); >>>> >> >>>> >>Dies with the same error as above. >>>> >> >>>> >> >>>> >>But this works? >>>> >> >>>> >>my Blob $read = Buf.new; >>>> >>$read ~= $socket.read(1024); >>>> >> >>>> >> >>>> >>Best regards, >>>> >>David Santiago >>>> > >>>> > >>>> >Hi! >>>> > >>>> >Can someone explain me why this doesn't work: >>>> > >>>> >my Blob $read; >>>> >$read ~= $socket.read(1024); >>>> > >>>> >Dies with error: >>>> > >>>> >X::Buf::AsStr: Cannot use a Buf as a string, but you called the >>>> Stringy method on it >>>> > >>>> >This also doesn't work: >>>> > >>>> >my Buf $read; >>>> >$read ~= $socket.read(1024); >>>> > >>>> >Dies with the same error as above. >>>> > >>>> > >>>> >But this works? >>>> > >>>> >my Blob $read = Buf.new; >>>> >$read ~= $socket.read(1024); >>>> > >>>> > >>>> >Best regards, >>>> >David Santiago >>>> >>>> >>>> Hi! >>>> >>>> Can someone explain me why this doesn't work: >>>> >>>> my Blob $read; >>>> $read ~= $socket.read(1024); >>>> >>>> Dies with error: >>>> >>>> X::Buf::AsStr: Cannot use a Buf as a string, but you called the Stringy >>>> method on it >>>> >>>> This also doesn't work: >>>> >>>> my Buf $read; >>>> $read ~= $socket.read(1024); >>>> >>>> Dies with the same error as above. >>>> >>>> >>>> But this works? >>>> >>>> my Blob $read = Buf.new; >>>> $read ~= $socket.read(1024); >>>> >>>> >>>> Best regards, >>>> David Santiago >>>> >>>> -- >>>> Sent from my Android device with K-9 Mail. Please excuse my brevity. >>>> >>> >>> >>> -- >>> JJ >>> >> > > -- > Simon Proctor > Cognoscite aliquid novum cotidie > > http://www.khanate.co.uk/ > -- Simon Proctor Cognoscite aliquid novum cotidie http://www.khanate.co.uk/