You can try this little script. It should work just fine.
use Win32::OLE qw(in with);
use vars qw(@ISA @EXPORT);
#use LTG::DocBuddy::Config qw($DEBUG);
@ISA = qw(Exporter);
@EXPORT = qw(readActiveDoc);
# this method returns the name of the active document and a hash containing every single
# word found in the document. Hence it is ready for use
if (my $word = Win32::OLE->GetActiveObject('Word.Application'))# connect to word document
# next line for debug only
# print "\nSuccessfully connected to existing word";
my $docName = $word->ActiveDocument->Name; # retrieve name
my $wordRange = $word->ActiveDocument->Content;
The method returns undef if no document was found. It actually take currently open document but it's easy to change and actually make it another file. Please note that the document needn't be saved which actually makes this code even better.