reneeb has asked for the wisdom of the Perl Monks concerning the following question:

I want to use Spreadsheet::WriteExcel::Big, but I get the errormessage below:

Character in "c" format wrapped at /usr/local/lib/perl5/site_perl/5.8.0/OLE/Storage_Lite.pm line +1367 (#1) (W pack) You said pack("c", $x) where $x is either less than -128 or more than 127; the "c" format is only for encoding native operating system characters (ASCII, EB +CDIC, and so on) and not for Unicode characters, so Perl behaved as if y +ou meant pack("c", $x & 255); If you actually want to pack Unicode codepoints, use the "U" forma +t instead.
What do I have to do?

Replies are listed 'Best First'.
Re: Problems with Spreadsheet::WriteExcel::Big
by jmcnamara (Monsignor) on Feb 17, 2005 at 12:18 UTC

    This should have been fixed in version 0.12 of OLE::Storage_lite.

    Check what version of the module you have installed:

    perl -le 'eval "require $ARGV[0]" and print $ARGV[0]->VERSION' OLE +::Storage_Lite
    To avoid this, and some other problems, you should upgrade to version 0.14 of OLE::Storage_lite.

    If you are using the latest version of the module and you still have this problem let me know.

    --
    John.

      The old version (0.11) was the problem. Thanks!
Re: Problems with Spreadsheet::WriteExcel::Big
by mlh2003 (Scribe) on Feb 17, 2005 at 12:10 UTC
    The Spreadsheet::WriteExcel::Big module uses the OLE::Storage_Lite module (where the error occurred). The author of the OLE::Storage_Lite module warns that it is still an alpha version, so there may be a few bugs in it (no offence to the author :) ).

    It is possible that the Spreadsheet::WriteExcel::Big module sent invalid data to the OLE::Storage_Lite module, or data that it cannot deal with - for instance trying to write to the worksheet object with non-ASCII code.

    Do you know which part of your code generates this error?

    --------------------

    print join'',(reverse sort map{/\d([a-z])\d/}split/\W/,'$5l6@314&60f%3 +h4#moo^1m2'),(map{/\d(\d)/}grep/\w\d/,reverse split/\W/,'a2&2b#9i*30% +42'),(unpack"AA",(chr(0b110000).chr(0b110011)));