use Win32::OLE; use Win32::OLE::Enum; # this $text will hold all the text of all the word docs my $text=""; # this is how we start Word from Perl my $word=Win32::OLE->new("Word.Application"); # for every file in the current directory foreach my $filename (<*.doc>) { # tell Word to open the file we just found my $doc=$word->Documents->Open($filename); # get an object representing all the paragraphs in the doc my $paragraphs=new Win32::OLE::Enum($doc->Paragraphs()); # for every paragraph... while(defined($paragraph = $paragraphs->Next())) { # append the paragraph text to $text $text.=$paragraph->{Range}->{Text}; } } foreach my $line (split(/\r\n/,$text)) { # this bit DEFINITELY doesn't work! if (/some pattern/) { ..do something.. } }