On 10/7/18 8:13 PM, ToddAndMargo via perl6-users wrote:
On 10/7/18 8:11 PM, Brandon Allbery wrote:
Use the read method instead. I did say in my previous message that
.read is for bytes, .readchars is for graphemes (UTF8 characters plus
any modifiers).
On Sun, Oct 7, 2018 at 11:03 PM ToddAndMargo via perl6-users
<perl6-us...@perl.org <mailto:perl6-us...@perl.org>> wrote:
On 10/7/18 7:58 PM, ToddAndMargo via perl6-users wrote:
> On 10/7/18 7:54 PM, ToddAndMargo via perl6-users wrote:
>> On 10/7/18 4:53 PM, Curt Tilmes wrote:
>>>
>>>
>>> On Sun, Oct 7, 2018 at 7:42 PM ToddAndMargo via perl6-users
>>> <perl6-us...@perl.org <mailto:perl6-us...@perl.org>
<mailto:perl6-us...@perl.org <mailto:perl6-us...@perl.org>>> wrote:
>>>
>>> I use `slurp` all the time, so of course, I can't
>>> make heads or tails out of
>>>
>>> https://docs.perl6.org/routine/slurp
>>>
>>> I want to slurp the first 400 characters of
>>> a file and close the handle. Am I missing a
>>> `so many` parameter somewhere?
>>>
>>>
>>> The purpose of slurp is to read the whole file -- if you want
part of
>>> it, look for .words(), .lines(), .read(),
>>> and for the specific use you point out, .readchars() --
>>> https://docs.perl6.org/type/IO::Handle#method_readchars
>>>
>>> Something like this:
>>>
>>> my $io = "myfile".IO.open;
>>> my $start = $io.readchars(400);
>>> $io.close;
>>>
>>> Curt
>>>
>>
>>
>> Hi Curt,
>>
>> Thank you! Readchars it is! I will make a sub call out of it.
>>
>> Where is my typo?
>>
>> $ p6 'my $fh=open "/home/linuxutil/To", :r; my Str $f=readchars(
$fh,
>> 400 ); say so $f.constains( chr(0) );'
>>
>> ===SORRY!=== Error while compiling -e
>> Undeclared routine:
>> readchars used at line 1
>>
>> $ perl6 -v
>> This is Rakudo version 2018.06 built on MoarVM version 2018.06
>> implementing Perl 6.c.
>>
>>
>>
>
>
> Oopos! It is a method.
>
> $ p6 'my $fh=open "/home/linuxutil/To", :r; my Str $f =
$fh.readchars(
> 400 ); $fh.close; say so $f.constains( chr(0) );'
>
> Malformed UTF-8
> in block <unit> at -e line 1
>
> What is with the Malformed UTF-8? Is readchars not binary?
>
> -T
>
>
With a text file and with a binary file and contains speeled
right.
$ p6 'my $fh=open "/home/linuxutil/X11Test.pl6", :r; my Str $f =
$fh.readchars( 400 ); $fh.close; say so $f.contains( chr(0) );'
False
$ p6 'my $fh=open "/home/linuxutil/To", :r; my Str $f =
$fh.readchars(
400 ); $fh.close; say so $f.contains( chr(0) );'
Malformed UTF-8
in block <unit> at -e line 1
how do I rid myself oof the UTF-8 error?
--
brandon s allbery kf8nh
allber...@gmail.com <mailto:allber...@gmail.com>
$ p6 'my $fh=open "/home/linuxutil/To", :r; my Str $f = $fh.read( 400 );
$fh.close; say so $f.contains( chr(0) );'
Type check failed in assignment to $f; expected Str but got Buf[uint8]
(Buf[uint8].new(87,111,114,100,8...)
in block <unit> at -e line 1
:'(
I just found out I can't use `contains` with a type Buf. Is
there a contains for Buf?
$ p6 'my $fh=open "/home/linuxutil/To", :r; my Buf $f = $fh.read( 400 );
$fh.close; my $g=$f.Str; say so $g.contains( chr(0) );'
Cannot use a Buf as a string, but you called the Str method on it
in block <unit> at -e line 1