#!perl -w use strict; use File::Find; find( \&handle_it, '/foo/bar' ); sub handle_it { return unless m!\.html\z!; my $name = $File::Find::name; open( my $fh, '+<', $name ) or (warn("open on $name failed: $!\n") and return); my $content = do { local $/; <$fh> }; $content =~ s!foo\@there\.com!bar\@here\.us!g; seek($fh, 0, 0) or die("seek on $name failed: $!\n"); truncate($fh, 0) or die("truncate on $name failed: $!\n"); print $fh $content; close($fh) or die("close on $name failed: $!\n"); }