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

Reply via email to