http://qs1969.pair.com?node_id=138922

oaklander has asked for the wisdom of the Perl Monks concerning the following question:

I have this find script that only seems to work 1 out of 10 times. Most of the time it corrupts the files and messes up the data. It is supposed to change a word in a directory and ALL of its sub directories on an NT. Can someone advise what I am doing wrong here to make this work correctly??
use File::Find; my @dirs = qw( . ); find ( \&change, @dirs ); sub change { if ( -f && /\.html$/ ) { my $file = $_; open(IN, $file) or die "CANT OPEN FILE!\n"; while(<IN>) { $data .= $_; } close IN; $buffer =~ s/OLDWORD/NEWWORD/gis; open(OPF,">$file") or die "NOT OPENING FILE FOR MOD, $!\n"; print OPF "$data"; close OPF; } }