Если это MSWord, то вы можете просто использовать модель автоматизации с Win32::OLE
Следующий код может работать для вас или, по крайней мере, для начала:
use strict;
use warnings;
use List::Util qw<first>;
use Win32::OLE qw<in>;
my $word = Win32::OLE->GetObject( 'C:\Path\Doc.doc' );
my $doc = $word->{ActiveDocument};
my $col_sect
= first { $_-> {PageSetup}{TextColumns}{Count} > 1 } in $doc->Sections
;
my $text = $col_sect->{Range}{Text};