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>