I doubt that the code you posted is the code that you use. Maybe, if this is the actual code, you are confused about what my does, or go about your way in a very roundabout manner.
Anyway, the main cause of your "problem" is that Word keeps temporary files open as long as your file is opened in Word. You need to actually close the document (or the Word application) so it cleans up its tempfiles. Your naming convention is quite confusing ($doc is a Word.Application object and not a document), so I'll rewrite your code to be closer to what Perl sees:
my $word = Win32::OLE->new('Word.Application', 'Quit'); $word->Documents->Open($path); my $new_name = $path; # Get a handle on the document we just opened, # so we don't need to use ActiveDocument: my $doc = $word->Documents($path); # Set new extension $new_name =~ s!\.fin$!.rtf!i; $doc->SaveAs({ FileName => $new_name, FileFormat => wdFormatRTF }); # Either one of these should work: # Close the document $doc->Close(); undef $doc; # Close Winword $word->Quit(); undef $word;
In reply to Re: Win32:OLE - close documents
by Corion
in thread Win32:OLE - close documents
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |