use strict; use warnings; use Win32::OLE qw(in); # "in" provides the enumeration mechanism# use Win32::OLE::Const 'Microsoft Word'; my $file = 'C:\Users\Netwallah\My Documents\test.docx'; my $WordApp = Win32::OLE->new('Word.Application', 'Quit'); #$WordApp->{'Visible'} = 0; my $doc = $WordApp->Documents->Open($file) or die("Unable to open document '$file':", Win32::OLE->LastError()); for my $para (in $doc->Paragraphs()){ for my $CurrentWord (in $para->{Range}->Words()){ next unless $CurrentWord->Text() =~/perl/i; $CurrentWord->Font->{Bold} = 1; } } $doc->Save(); $WordApp->ActiveDocument->Close ; $WordApp->Quit;