in reply to Removing include files

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:

# 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.