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.
|