Ошибка нехватки памяти при разборе определенного файла excel из программы Perl

При запуске Perl-кода программа выдает несколько предупреждений и завершает работу. Результат выглядит следующим образом:

D:\Perl\bin\search tool>perl testa.pl 
UTF-16 surrogate 0xdb79 at D:/Perl/site/lib/Spreadsheet/ParseExcel/FmtDefault.pm line 81. 
UTF-16 surrogate 0xdbb1 at D:/Perl/site/lib/Spreadsheet/ParseExcel/FmtDefault.pm line 81. 
UTF-16 surrogate 0xd83e at D:/Perl/site/lib/Spreadsheet/ParseExcel/FmtDefault.pm line 81. 
UTF-16 surrogate 0xdff8 at D:/Perl/site/lib/Spreadsheet/ParseExcel/FmtDefault.pm line 81. 
UTF-16 surrogate 0xdbff at D:/Perl/site/lib/Spreadsheet/ParseExcel/FmtDefault.pm line 81. 
UTF-16 surrogate 0xdd98 at D:/Perl/site/lib/Spreadsheet/ParseExcel/FmtDefault.pm line 81. 
substr outside of string at D:/Perl/site/lib/Spreadsheet/ParseExcel.pm line 1196. 
Use of uninitialized value in unpack at D:/Perl/site/lib/Spreadsheet/ParseExcel.pm line 1196. 
substr outside of string at D:/Perl/site/lib/Spreadsheet/ParseExcel.pm line 1196.
Use of uninitialized value in unpack at D:/Perl/site/lib/Spreadsheet/ParseExcel.pm line 1196. 
Out of memory! 

Информация о системе выглядит следующим образом:

Версия Perl: 5.010000 Имя ОС: MSWin32 Версии модуля: (не все обязательны) Spreadsheet::ParseExcel 0.49 Scalar::Util 1.19 Unicode::Map (не установлено) Spreadsheet::WriteExcel (не установлено) Parse::RecDescent (не установлено) ) File::Temp 0.18 OLE::Storage_Lite 0.18 IO::Stringy 2.110

Perl-код выглядит следующим образом:

use strict; 
    use Spreadsheet::ParseExcel; 
    my $parser = Spreadsheet::ParseExcel->new( 
        CellHandler => \&cell_handler, 
        NotSetCell  => 1 
    ); 
    my $workbook = $parser->Parse('testfile.xls'); 
    sub cell_handler { 
        my $workbook    = $_[0]; 
        my $sheet_index = $_[1]; 
        my $row         = $_[2]; 
        my $col         = $_[3]; 
        my $cell        = $_[4]; 
        print $cell->unformatted(), "\n"; 
    }

У меня также есть образец testfile.xls.


person Pankaj    schedule 18.02.2009    source источник


Ответы (1)


Ответ на этот вопрос был дан в группе Google Spreadsheet::ParseExcel здесь.

Проблема в том, что конкретный файл зашифрован.

Джон.

person jmcnamara    schedule 18.02.2009
comment
Как определить файлы такого типа программно? - person Pankaj; 18.02.2009
comment
Вы должны задать это в отдельном вопросе. - person jrockway; 18.02.2009