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

Hi I have a program in Perl which uses Win32::OLE to use excel to create a report, then mail that report to users the program now is running fine in Perl 32 bit in Win2003 SP2 we are upgrading to new machine Win 2008 64 bit , Perl64 bit when i run the same program in Perl64 bit I get this error message

defined(@array) is deprecated at C:/Perl64/site/lib/Mail/Sender.pm line 329. (Maybe you should just omit the defined()?) defined(@array) is deprecated at C:/Perl64/site/lib/Mail/Sender.pm line 2613. (Maybe you should just omit the defined()?) Win32::OLE object version 0.1709 does not match $Win32::OLE::VERSION 0.1704 at C :/Perl64/lib/DynaLoader.pm line 214. Compilation failed in require at C:\misc\tools\reporting\cwc_daily_report.pl lin e 4. BEGIN failed--compilation aborted at C:\misc\tools\reporting\cwc_daily_report.pl line 4.

I have copied the Perl 32 bit in the new machine , and it can run the program fine , however i want to use the perl 64 bit to get the benefit of using more than 2GB memory Any Help please? Thanks

Replies are listed 'Best First'.
Re: Perl64 bit Win32::OLE problem
by syphilis (Archbishop) on Jan 14, 2014 at 01:24 UTC
    Win32::OLE object version 0.1709 does not match $Win32::OLE::VERSION 0.1704

    That's the problem - the other stuff you see is just a warning (not a fatal error) that you should omit the "defined" from "defined @whatever".

    The problem is that your lib/Win32/OLE.pm is version 0.1704, but your lib/auto/Win32/OLE/OLE.dll is for version 0.1709. This sort of mismatch is not allowed.
    How did it happen ?

    Cheers,
    Rob