Beefy Boxes and Bandwidth Generously Provided by pair Networks Joe
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re^2: How to have OS specific code sections in Perl

by aitap (Chaplain)
on Oct 31, 2012 at 18:54 UTC ( #1001731=note: print w/ replies, xml ) Need Help??


in reply to Re: How to have OS specific code sections in Perl
in thread How to have OS specific code sections in Perl

Unfortunately, this is not going to work because $LINUX is undef at compile-time:

$ perl if ($^O eq 'linux') { $LINUX=1; }; use if $LINUX, 'MIDI::ALSA' => ('SND_SEQ_EVENT_PORT_UNSUBSCRIBED', 'SND_SEQ_EVENT_SYSEX'); __END__ $ perl -MMIDI::ALSA Can't locate MIDI/ALSA.pm in @INC (@INC contains: /home/aitap/perl5/li +b/perl5/i486-linux-gnu-thread-multi-64int /home/aitap/perl5/lib/perl5 +/i486-linux-gnu-thread-multi-64int /home/aitap/perl5/lib/perl5 /etc/p +erl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/ +perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/l +ocal/lib/site_perl .). BEGIN failed--compilation aborted.
But if the test is done in the BEGIN{} section, everything works (well, not for me because of the absence of the module):
$ perl BEGIN{ if ($^O eq 'linux') { $LINUX=1; }; } use if $LINUX, 'MIDI::ALSA' => ('SND_SEQ_EVENT_PORT_UNSUBSCRIBED', 'SND_SEQ_EVENT_SYSEX'); Can't locate MIDI/ALSA.pm in @INC (@INC contains: /home/aitap/perl5/li +b/perl5/i486-linux-gnu-thread-multi-64int /home/aitap/perl5/lib/perl5 +/i486-linux-gnu-thread-multi-64int /home/aitap/perl5/lib/perl5 /etc/p +erl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/ +perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/l +ocal/lib/site_perl .) at /usr/share/perl/5.14/if.pm line 13. BEGIN failed--compilation aborted at - line 3.
Sorry if my advice was wrong.


Comment on Re^2: How to have OS specific code sections in Perl
Select or Download Code
Re^3: How to have OS specific code sections in Perl
by perltux (Beadle) on Oct 31, 2012 at 19:02 UTC
    Thank you, that explains why I had to use:

    use if ($^O eq 'linux'), 'MIDI::ALSA'

    and why any other alternative with $LINUX I tried didn't work!

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1001731]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (5)
As of 2014-04-18 00:36 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (460 votes), past polls