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 reply to Re: Re: Remove Blank Lines Off the End of a File
by PrakashK
in thread Remove Blank Lines Off the End of a File
by jbisbee
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |