Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: Re: Re: Remove Blank Lines Off the End of a File

by jmcnamara (Monsignor)
on Feb 28, 2002 at 14:30 UTC ( #148220=note: print w/ replies, xml ) Need Help??


in reply to Re: Re: Remove Blank Lines Off the End of a File
in thread Remove Blank Lines Off the End of a File


Very nice.

However, it strips the last \n from the file (which probably isn't desirable) and it truncates non-whitespace data if there isn't a final \n. Which means that if you run the program twice in a row it will strip non-whitespace data from the end of the file.

Also, your tell() is followed by a read() so the next seek() starts from the EOF again and not from $cur_pos. ;-)

The following changes fix these problems:

#!/usr/bin/perl -w use strict; my $file = shift or die; open my $fh, "+<$file" or die "$!"; binmode $fh; # Just in case 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*2, 1; } $buf =~ m/(\s+)$/s; $cur_pos += $-[0] || 0; truncate $fh, ++$cur_pos if $cur_pos; close $fh; exit 0;

--
John.


Comment on Re: Re: Re: Remove Blank Lines Off the End of a File
Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (12)
As of 2015-07-03 06:19 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 (48 votes), past polls