in reply to Re: Remove Blank Lines Off the End of a File
in thread Remove Blank Lines Off the End of a File
Don't use Perl if you don't want to read the whole file inSure you can do this in perl without reading the whole file. Here's some code (untested) (updated to fix a couple of mistakes).
This will read only what is necessary and does not keep what it has already processed.#!/usr/bin/perl -w use strict; my $file = shift or die; open my $fh, "+<$file" or die "$!"; my $size = 4096; my ($cur_pos, $buf); seek $fh, -$size, 2; while (1) { $cur_pos = tell $fh; read $fh, $buf, $size; last if $buf =~ m/\S/s; seek $fh, -$size, 1; } $buf =~ m/(\s+)$/s; $cur_pos += $-[0]; truncate $fh, $cur_pos; close $fh; exit 0;
I am sure there are better ways of doing this.
/prakash
Update: I finally got some time and tested the above and found another bug (fixed in the code above). I was not supposed to use sysread and seek<code> together (<code>sysseek will probably do fine), so I changed the sysread to <code>read<code>, and it worked ok.
(Note to self: Never post untested code.)
In Section
Seekers of Perl Wisdom