Dan Muey wrote:
Dan Muey wrote:

I have ~97 HTML documents that I need to strip the footer
(about 15 lines) from and replace with a different block of text. The footer is formatted differently in some of the HTML files, but they all start with the line:


<table border="0" width="100%" height="5%">

How can I replace everything after that particular line with
a custom block of text? Thanks.


Here's one way, you say the files are html so slurping

shouldn't hurt:


[untested - for principle demo only]
#!/usr/bin/perl -w
use strict;
use File::Slurp;

my $newhtml = '</table></body></html>';
my $split = '<table border="0" width="100%" height="5%">';
my @files = qw(index.html contact.html); # populate this by hand or automatially if you want


my $count = 0;
for(@files) {
        print "Starting $_ ...";
        my $html = read_file($_);

my ($firstpart) = split $split, $html; # may need to

tweak around


with this

        write_file($_, "$firstpart$split$newhtml");
        print "Done!\n";
        $count++;
}

print "\nFinished : $count files processed.\n";

This slightly modified version of your script seems to work just fine:




Cool.


#!/usr/bin/perl -w
use strict;
use File::Slurp;

my $newhtml = '<! Old footer snipped here>\n</body></html>';

^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The only problem I see here you have enter the same data twice leaving room for mistakes you have to fix.


So by leaving it out of $newhtml and using print "$firstpart$split$newhtml\n"; # or add some newlines for readability
You gaurantee the same data with no mistakes.

I don't understand why you include $split in the new file. The text I want to get replace is from and including that line to the end of the file.


my $split = '<table border="0" width="100%" height="5%">';
my @files = qw(uc.html); # populate this by hand or automatially if you want


for(@files) {
        print "Starting $_ ...";
        my $html = read_file($_);

my ($firstpart) = split $split, $html; # may need to tweak around with this

#       write_file($_, "$firstpart$split$newhtml");
        print "$firstpart$newhtml\n";
        print "Done!\n";
}

--
Andrew Gaffney




--
Andrew Gaffney
System Administrator
Skyline Aeronautics, LLC.
776 North Bell Avenue
Chesterfield, MO 63005
636-357-1548



--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>




Reply via email to