If I understand what you're trying to do in this code, I think the following should work, although I included the standard disclaimer that this is not tested, and I may have totally misunderstood your intent.
This code looks at each line of the input:
-
The substitution pattern at [3] is probably not the best solution, but I gave it some light testing and it seems to work Ok.
-
The lexical variable $line is omitted because it isn't used.
- [1] If the input line matches an SSI include of the type that we don't want, we do nothing with the line, which omits it from the output.
-
[2] If the line is part of the body section, fix any anchors which refer to on-site .html files.
-
Finally, we print to the output.
# always check the results of an open()
open (FILE, $filename) or die "unable to open $filename for input: $!"
+;
while (<FILE>) {
# [1] omit line from output if it matches:
# (make `[^.]*' more specific if only certain words should match)
next if m~<!--\s*#include virtual\s*=\s*"/global_nav_[^".]*.ssi"\s*-
+->~;
chomp;
# [2]
if (m!<body[^>]*>!i ... m!</body[^>]*>!i) { # modify body lines only
# [3] replace .html with .asp in anchors in this line
s~(href\s*=\s*") # capture beginning of anchor in $1
(?!http://) # _not_ followed by http://
([^"]+) # capture base of filename in $2
\.html # match .html
~${1}${2}.asp~gix; # make substitution, global
}
print OUTFILE;
}
UPDATE: minor changes to substitution pattern. Thanks to japhy my regex hero.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.