use warnings ; use strict ; use diagnostics ; use Win32::OLE qw(in); use Cwd ; my @files = <*.doc> ; foreach my $infile (@files) { $infile =~ /(.*).doc/ ; my $outfile = $1 . '.txt' ; $infile = Win32::GetCwd() . "/$infile" if $infile !~ /^(\w:)?[\/\\]/; $outfile = Win32::GetCwd() . "/$outfile" if $outfile !~ /^(\w:)?[\/\\]/; my $Word = Win32::OLE->new('Word.Application', 'Quit') or die "Couldn't run Word"; my $Doc = $Word->Documents->Open($infile) or die Win32::OLE->LastError(); open(OUT,">$outfile"); print OUT $Doc->{Content}->{Text}; close OUT; }