| > open(READ, "$ARGV[0]"); | > | > $wholeText = ""; | > | > while(defined($i = <READ>)) { | > $i =~ s/\.Cure/\.fa/g ; | > $i =~ s/cure-/fa-/g ; | > $i =~ s/class=Cure/class=fa/g ; | > $i =~ s/window.name!=\"frSheet\"/false/g ; | > $wholeText = join('', $wholeText, $i); | > } | > open(WRITE,"> $ARGV[1]"); | > print WRITE $wholeText; | > | > close(READ); | > close(WRITE); | | Change it to : | | open(READ, "$ARGV[0]"); | open(WRITE,"> $ARGV[1]"); | | while(defined($i = <READ>)) { | $i =~ s/\.Cure/\.fa/g ; | $i =~ s/cure-/fa-/g ; | $i =~ s/class=Cure/class=fa/g ; | $i =~ s/window.name!=\"frSheet\"/false/g ; | print WRITE $i; | } | | close(READ); | close(WRITE);
Agreed, however there is more that can be done. You want to filter out non-matching lines ASAP, so you apply full substitutions when there is a good chance of needing one. I suggest the following for the loop: while(defined(<READ>)) { # Limit substitutions to lines with either "cure" or "Cure". if (/[Cc]ure/) { s/\.Cure/\.fa/g; s/cure-/fa-/g; s/class=Cure/class=fa/g; } # Limit substitutions to lines with "window.name" if (/window\.name/) { s/window.name!=\"frSheet\"/false/g; } print WRITE; } It's not going to happen _much_ faster than that. To increase performance further use C and XS, or remove the /g modifiers unless you really need them. Jonathan Paton PS: I rarely test scripts before posting... it _should_ work! If not, a few minor tweaks should make it work. __________________________________________________ Do You Yahoo!? Everything you'll ever need on one web page from News and Sport to Email and Music Charts http://uk.my.yahoo.com -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]