http://www.perlmonks.org?node_id=477281

boat73 has asked for the wisdom of the Perl Monks concerning the following question:

Hello wise ones. I have a script that opens a Word Document, saves it as a txt document. This code works fine. Does anyone know of a way to capture the text from the word document into an array without saving it to a txt document first? Below is the working code and as always I am open to any and all criticism both good and bad. Thanks in advance.
use Win32::OLE; use constant wdCRLF => 0; use constant wdFormatText => 2; use constant wdOpenFormatAuto => 0; $doc = "c:\\temp\\test.doc"; $txtdoc = "$ENV{TEMP}\\reportmacro.txt"; $Win32::OLE::Warn = 3; my $wd_object = (Win32::OLE->GetActiveObject('Word.Application') || Win32::OLE->new('Word.Application', 'Quit')); ##### MAKE WORD APP VISIBLE(1), NOT VISIBLE(0) #### $wd_object -> {Visible} = 1; $wd_object->Documents->Open({FileName => "$doc", ConfirmConversions +=> 0, ReadOnly => 0, AddToRecentFiles => 0, PasswordDocume +nt => '', PasswordTemplate => '', Revert => 0, WritePasswordDocument => + '', WritePasswordTemplate => '', Format => wdOpenFormatAuto, XMLTransf +orm => ''}); $wd_object->ActiveDocument->SaveAs({FileName => "$txtdoc", FileForma +t => wdFormatText, LockComments => 0, password => '', AddToRecentFil +es => 1, WritePassword => '', ReadOnlyRecommended => 0, Embe +dTrueTypeFonts => 0, SaveNativePictureFormat => 0, +SaveFormsData => 0, SaveAsAOCELetter => 0, Encodin +g => 1252, InsertLineBreaks => 1, AllowSubstitutions => 0, LineE +nding => wdCRLF}); $wd_object->ActiveDocument->Close();