You're being tripped up timing as use happens at compile-time, but everything else in your script (including the logic to determine the OS) happens afterwards during run-time.
To get around this, you can change the uses to a require/import combo ...
if ( $^O eq "MSWin32" ) { require Win32::EventLog; $eventlog = Win32::EventLog->new( "myscript" ); } else { require Sys::Syslog; import Sys::Syslog qw/ :DEFAULT setlogsock /; setlogsock( 'unix' ); openlog( 'myscript', 'pid', 'INFO' ); }
On a side note, there's not much point in importing methods from an OO-based module like Win32::EventLog; $obj->foo should do the right thing if it's a valid method.
Similarly, it's silly to import from non-OO modules if you're just going to call those functions explicity ( Sys::Syslog::openlog() vs openlog()).
--k.
In reply to Re: Coding for two platforms in one Script
by Kanji
in thread Coding for two platforms in one Script
by BoredByPolitics
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |