http://qs1969.pair.com?node_id=11137429


in reply to Re: Bareword issue with Perl 5.34
in thread Bareword issue with Perl 5.34

Thank you for your reply. I am starting to think that the issue is somewhere else. My .pl script should run both on macOS and on Windows. Obviously, when on it is run on macOS, the Win32::OLE should be skipped. I solved this like this:

use if $^O eq 'MSWin32', 'Win32::OLE'; if ( $^O eq 'MSWin32' ) { $Win32::OLE::CP = 'CP_UTF8'; }

Or compacter:

use if $^O eq 'MSWin32', 'Win32::OLE::CP' => 'CP_UTF8';

On macOS the scripts load correctly and Win32::OLE stuff is skipped. If I use the same without '' or any of your suggestions, I get the Bareword "CP_UTF8" error. Am I everseeing something?

Replies are listed 'Best First'.
Re^3: Bareword issue with Perl 5.34
by Corion (Patriarch) on Oct 11, 2021 at 18:18 UTC

    I think you want

    use if $^O eq 'MSWin32', 'Win32::OLE', 'CP' => 'CP_UTF8';

    That is still the "old" way of using Win32::OLE. The new way would be something like:

    use if $^O eq 'MSWin32', 'Win32::OLE'; if( $^O eq 'MSWin32' ) { Win32::OLE->Options( CP => 'CP_UTF8' ); # or maybe # Win32::OLE->Options( CP => Win32::OLE::CP_UTF8 ); }