use strict; use warnings; use Win32::OLE qw(in); use Win32::OLE::Const 'Microsoft Word'; use Win32::OLE::Variant; $|=1; sub Parse{ my $document_name = 'C:\TestPolicy.rtf'; my $word = Win32::OLE->GetActiveObject('Word.Application') || Win32::OLE->new('Word.Application','Quit') or die Win32::OLE->LastError(); my $document = $word->Documents->Open($document_name) or die Win32::OLE->LastError(); my $paragraphs = $document->Paragraphs (); my $n_paragraphs = $paragraphs->Count (); my $outputfile = 'C:\testfile.txt'; open(INPUT, $document_name) or die "Failed to open $document_name\n"; while (){ if ($_ =~ /HISTORY/../TABLE/){ open(OUTPUT, '>'.$outputfile) or die "Can't create $outputfile.\n"; print OUTPUT "$_\n"; close OUTPUT; } } close INPUT; } Parse()