Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask

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;


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://148220]
[shmem]: oh the whitespace in the regex got condensed, meh
[shmem]: should be /^ {7}(\w+)/ or such
[shmem]: least for my perldoc on Linux debian 8
[Discipulus]: mmh.. at themomemt i just an old 5.8 and outputs just GLOBAL::
[Discipulus]: anyway thanks! i've posted my font size suggestion anyway

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (8)
As of 2017-05-23 10:10 GMT
Find Nodes?
    Voting Booth?