~ 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
>

Reply via email to