in reply to Spreadsheet::Read Win32::LongPath::openL

It seems to have nothing to do with long paths or non-latin characters:

use strict; use warnings; use feature 'say'; use Spreadsheet::Read; use Spreadsheet::ParseExcel; open my $h, '<', '1.ods'; # this file exists Spreadsheet::ParseExcel-> new-> parse( $h ); #### say 'eof' if eof $h; say 'ok' if defined ReadData( $h );

says 'eof'. But if line marked with '###' is commented out, the output is

Sorry, references as input are not (yet) supported by Spreadsheet::Rea +dSXC at xl.pl line 11.

So, the reason that you can't supply filehandles to Spreadsheet::ReadSXC is because it doesn't support them. And there was no proper error reported for your example, because of this line -- and that line wasn't reached.

Copying to a temporary safely named file can solve it:

use strict;
use warnings;
use feature 'say';
use utf8;
use Spreadsheet::Read;
use File::Temp;
use Win32::LongPath;

my $tmp = File::Temp-> new( SUFFIX => '.ods' )-> filename;

copyL 'проверка.ods', $tmp;                 # this file exists

say 'ok' if defined ReadData( $tmp );

Replies are listed 'Best First'.
Re^2: Spreadsheet::Read Win32::LongPath::openL
by Anonymous Monk on Dec 10, 2018 at 09:50 UTC

    Thank you very much for the explanation. Good to know that Spreadsheet::ReadSXC does not accept filehandles. Your suggested solution works perfectly. Easy and efficient!