On Fri, 2015-10-30 at 21:04 +0000, Carl Friedberg wrote:
> Craig,
>
> Wow, thanks for your meticulous research. Great job!
>
> Carl
>
> Carl Friedberg
> [email protected] (212) 798-0718
> www.esb.com
> The Elias Book of Baseball Records
> 2015 Edition
>
>
> -----Original Message-----
> From: Craig A. Berry [mailto:[email protected]]
> Sent: Friday, October 30, 2015 4:59 PM
> To: vmsperl ([email protected])
> Subject: Re: Excel::Writer on OpenVMS
>
>
> > 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
>
What version of Workbook.pm do you have? Line 964 in mine is not:
sub _store_workbook {