develooper Front page | perl.perl6.users | Postings from February 2019

Re: Start reading at a specific index?

Thread Previous
From:
ToddAndMargo via perl6-users
Date:
February 3, 2019 06:38
Subject:
Re: Start reading at a specific index?
Message ID:
b2ec8ebf-9557-6ad4-dad0-f522f941a7bd@zoho.com
 > 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

Thread Previous


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About