in reply to break up file with no line breaks
You can read fixed-size chunks from your file handle. Then do your splitting similar to what you're doing now. Just set your input record size like so:
local $/ = \500;
Then you can chop it up into approximately 80 character lines breaking on the commas like you're doing now, and when you need more text (say, when you have less than 100 characters left, read another chunk and append it to your text buffer). Here's an example of how you might approach it. (Note: rather than worry about 80 character lines, I'm just writing 10 values on each line.)
#!/usr/bin/perl -w use strict; use warnings; local $/ = \500; open IN, '<', 'bigfile.csv' or die $!; my @values; while (my $line = <IN>) { push @values, split /,/, $line; while (@values > 10) { print join(',',@values[0..9]), "\n"; @values = @values[10..@values-10]; } } close IN or die $!;
...roboticus
UPDATE: D'oh! ikegami's solution looks much better... Ah, well. I guess I need to read Text::Wrap now...
|
|---|