in reply to Re: Re: Re: Re: Changing .html to .asp
in thread Changing .html to .asp

Ok. I found your problem. Here, let me show ya.
##changing .html to .asp in the links        
        if ( grep(/a href.*\.html/,$line) ){
            (my $newline = $line ) =~ s/\.html/\.asp/g;            
        print OUTFILE $newline . "\n";
        }
Ok, that is fine. Your problem, however, is after this. Bear in mind that you are going through these files line by line. Therefore, the line that you are replacing the old line with must be placed in the new file instead of the old line, right? So, keeping your above code in mind, you have just found a line that matches what you are looking for and have changed it. You have also printed that line to the newfile. But what do you do next?
         $body_temp = $_;
         $body_temp =~ s/(.*?)\<body\>(.*?)\<\/body\>/$2/i;
         chomp($body_temp);

         $body = "$body_temp" ;
        
         # Write the body to the output file
         print OUTFILE $body . "\n";
        }
...amongst all the other stuff you done with the html body tag, you printed the line again, because you never left that line before processing it through the stuff after your if statement. You won't leave that line until the end of the loop iteration. Therefore, you should use an 'else' block in your 'if-then' statement.

e.g.

while ( <FILE> ) {
    if ( this line matches this regex ) {
        change the line;
        # If you need to do something to this line
        # do it here
        print it to the new file;
    } else {
        # this line obviously does not match my regex
        # so ignore it (or do some more stuff to it) 
        # and move on to the next line.
        Stuff to do to the line I didn't have to change...
        print the old line to the new file
    }
}
See what Im doing? :)

----------
- Jim

  • Comment on Re: Re: Re: Re: Re: Changing .html to .asp