> On Oct 30, 2015, at 9:43 AM, Craig A. Berry <[email protected]> wrote:
>
> It still fails to clean up the temp directory and I think it’s that same
> [Content_Types].xml file that is causing the problem. Don’t have a solution
> for that yet.
Now I do. When the File::Temp destructor tries to clean up the temp directory,
it calls File::Path::rmtree, which navigates to each directory and deletes each
file in it before deleting the directory. That fails because
[Content_Types].xml as a relative specification is ambiguous, so the delete of
that file fails and then the attempt to delete the directory containing it
fails.
Deleting [Content_Types].xml as part of an absolute path is fine, though, as
it’s not ambiguous when there are directory components present. We can help
things out by deleting the files we’ve created before the File::Temp destructor
ever attempts to go after them.
So along with DECC$FILENAME_UNIX_REPORT, the following gets us a working
Excel::Writer::XLSX on VMS:
$ gdiff -pu lib/Excel/Writer/XLSX/Workbook.pm;-0
lib/Excel/Writer/XLSX/Workbook.pm
--- lib/Excel/Writer/XLSX/Workbook.pm;-0 2015-10-29 14:09:16 -0500
+++ lib/Excel/Writer/XLSX/Workbook.pm 2015-10-30 13:07:34 -0500
@@ -964,7 +964,7 @@ sub _store_workbook {
# with File::Find and pass each one to addFile().
my @xlsx_files;
- my $wanted = sub { push @xlsx_files, $File::Find::name if -f };
+ my $wanted = sub { push @xlsx_files, $File::Find::name unless -d };
File::Find::find(
{
@@ -1010,6 +1010,7 @@ sub _store_workbook {
print { $self->{_filehandle} } $buffer;
}
}
+ for my $f ( @xlsx_files ) { 1 while unlink $f; }
}
[end]
________________________________________
Craig A. Berry
mailto:[email protected]
"... getting out of a sonnet is much more
difficult than getting in."
Brad Leithauser