> On Sat, Feb 2, 2019 at 9:02 PM ToddAndMargo via perl6-users
> <perl6-users@perl.org> wrote:
>>
>> On 2/2/19 3:16 AM, Shlomi Fish wrote:
>>> On Sat, 2 Feb 2019 01:08:39 -0800
>>> ToddAndMargo via perl6-users <perl6-users@perl.org> wrote:
>>>
>>>> Hi All,
>>>>
>>>> Is there a way to modify this to start reading at
>>>> a specific index?  And include how many bytes (3000000)
>>>> to read as well?
>>>>
>>>>         my $FileHandle     = open( $FileName, :bin, :ro );
>>>>         my Buf $BinaryFile = $FileHandle.read( 3000000 );
>>>>
>>>> Many thanks,
>>>> -T
>>>
>>> See https://docs.perl6.org/routine/seek .
>>>
>>>
>>
>>
>> Thank you!
>>
>>
>> I am not sure exactly what they mean by "$whence".
>>
>> method seek(IO::Handle:D: Int:D $offset, SeekType:D $whence --> True)
>>
>>       SeekFromBeginning: The beginning of the file.
>>
>> my Bool $GoodRead = seek($FileHandle, $offset, SeekFromBeginning );
>> my Bool $GoodRead = seek.$FileHandle( $offset, SeekFromBeginning );
>>
>> Or do I need to assign something to a variable called "$whence"?
>>
>> Many thanks,
>> -T
>>

On 2/2/19 8:05 PM, Brad Gilbert wrote:
`$whence` means “whence”
     adverb
    1.
         from what place or source.

So it should be one of the values of the `SeekType` enum

     say SeekType.enums.keys
     # (SeekFromCurrent SeekFromBeginning SeekFromEnd)

- `SeekFromCurrent` means it is relative to where it is currently (go
forward/backward)

     $fh.read(1);
     $fh.seek( -1, SeekFromCurrent);
     $fh.read(1); # same as previous `.read`

     # pretend to have read 5 bytes
     $fh.seek( 5, SeekFromCurrent );

- `SeekFromBeginning` means absolute position.

     # restart at beginning, and then skip forward 5 bytes
     $fh.seek( 5, SeekFromBeginning );

- `SeekFromEnd` means absolute position, except starting at the end of the file

     $fh.seek( -1, SeekFromEnd );
     $fh.read(1); # read last byte


Hi Brad.  I understand now.  Thank you!  -T

Reply via email to