-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 >>>>> "Rob" == Rob Dixon <[EMAIL PROTECTED]> writes:
Rob> Sukrit wrote: >> Hi Listers, How do i delete the last 12 (or so) lines of a >> large file (400+ lines) without loading the whole into memory. Rob> 400 lines isn't too huge. I would say just read the file once Rob> to count the lines. Then re-read it, printing twenty less Rob> lines than you counted. It's dirty but it's quick :) Rob> I'll even have a stab at the code for you: Rob> use strict; use warnings; Rob> open FILE, 'ppm_search.txt' or die $!; my $lines = grep Rob> 1, <FILE>; seek FILE, 0, 0 or die $!; $lines -= 20; print Rob> <FILE>.'' while ($lines--); While waiting for your reply, my goals changed a bit. i got some sort of worm (redlof if you must know) on my windows machine (with some 11000 files affected). It tags to the end of every html file, so i didn't want chomping of last 12 lines of files that hadn't got it :) But i must say this brevity is the soul of wit and you guys sure are witty (it'll take me a while to understand your codes!). What i like about perl is that there are levels to it, my code works it's no where as elgant as yours but it works. Elegance can wait but i hope it'll come to me one day :) sub clean_file1 { my $file_to_clean = $_[0]; my @clean_array; open(TO_CLEAN, $file_to_clean) || die "Can't Open File Stopping: $!"; #populate clean_array, with file without script foreach(<TO_CLEAN>){ if($_ =~ /\bKJ_start()\b/) { last;} else { push(@clean_array, $_);} } close(TO_CLEAN) ||die "can't close1"; #write clean_array back to file open(CLEANED,">$file_to_clean") || die "Hey Can't Open Stopping: $!"; foreach(@clean_array){print CLEANED $_;} close(CLEANED); } Rob> Cheers, Rob> Rob Regards sukrit Or Just Another Perl Lamer ;) PS Sorry for onlist mail i always manage to forget that reply-to isn't set to the list -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: Processed by Mailcrypt 3.5.8 <http://mailcrypt.sourceforge.net/> iD8DBQE+NC4aWQMs1XfYH8QRAi27AJ9xQjM1gu1IpC8075FeNFy0XBw2BQCeJ4NJ BXOBx9bi/DZGal0jCWSr4lY= =exW5 -----END PGP SIGNATURE----- -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]