Yes, you can call .comb on a file handle (which I hadn't realized) and
if you give it an integer as first argument, that treats it as a chunk
size... So stuff like this seems to work fine:
my $fh = $file.IO.open;
my $chunk_size = 1000;
for $fh.comb( $chunk_size ) -> $chunk {
say $chunk.chars; # 10000
say "~~~>>>", $chunk, "<<<<~~~";
}
But I see you tossed in the caveat "Assuming it is a text file": is
there a problem if it's some other type of file?
On 10/20/19, Brad Gilbert <[email protected]> wrote:
> Assuming it is a text file, it would be `.comb(512)`
>
> On Sun, Oct 20, 2019 at 4:39 PM Joseph Brenner <[email protected]> wrote:
>
>> I was just thinking about the case of processing a large file in
>> chunks of an arbitrary size (where "lines" or "words" don't really
>> work). I can think of a few approaches that would seem kind-of
>> rakuish, but don't seem to be built-in anywhere... something like a
>> variant of "slurp" with an argument to specify how much you want to
>> slurp at a time, that'll move on to the next chunk the next time it's
>> invoked...
>>
>> Is there anything like that kicking around that I've missed?
>>
>