Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re: Handling A File In Human-Compatible Chunks

by broquaint (Abbot)
on Jun 27, 2005 at 12:10 UTC ( #470231=note: print w/ replies, xml ) Need Help??


in reply to Handling A File In Human-Compatible Chunks

I don't know of an existing module but you could do it something like this:

sub get_nice_chunk { my($fh, $size) = @_; local $/ = ''; local $_; my $chunk; $chunk .= $_ while $_ = <$fh> and length($_) + length($chunk) < $size; seek $fh, tell($fh) - length($_), 0 if length($_) + length($chunk) < $size; return $chunk; } print "got chunk: $_" while $_ = get_nice_chunk(\*DATA, 19); __DATA__ foo bar baz quux ichi ni san shi the last bit
So that just sets the INPUT_RECORD_SEPARATOR to paragraph mode, reads paragraphs until we've hit the $size limit, rewinds the file pointer and returns the chunk. However, this does suffer from the bug that it won't read pargraphs greater than $size but I'll leave that as an exercise to the OP of what to do in that case.
HTH

_________
broquaint


Comment on Re: Handling A File In Human-Compatible Chunks
Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://470231]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (8)
As of 2015-08-01 01:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (285 votes), past polls