#!/usr/bin/perl -w # Uses use strict; use Win32::OLE; use Win32::OLE::Variant; use Win32::OLE::Const; use File::Find; # Variables use vars qw($MSWord $wd $startdir); # Where to start the doc search $startdir='c:\tmp'; # Create new MSWord object and load constants $MSWord=Win32::OLE->new('Word.Application','Quit') or die "Could not load MS Word"; $wd=Win32::OLE::Const->Load($MSWord); # Find documents find(\&rTxt,$startdir); sub rTxt { # We only want .doc files (no links...) return unless /\.doc$/ && -f && ! -l; # Open document my $doc = $MSWord->Documents->Open({FileName=>$File::Find::name}); # Exit nicely if we couldn't open doc return unless $doc; # Print some info print $File::Find::name,"\n"; # Content object my $content=$doc->Content; # Find object my $find=$content->Find; $find->ClearFormatting; $find->{Text}="Yoo"; $find->Replacement->ClearFormatting; $find->Replacement->{Text}="Hello"; $find->Execute({Replace=>$wd->{wdReplaceAll},Forward=>$wd->{True}}); # Close document $doc->Close({SaveChanges=>$wd->{wdSaveChanges}}); }