http://www.perlmonks.org?node_id=923804


in reply to Re^2: code that runs (and works) on both Linux and Win32
in thread code that runs (and works) on both Linux and Win32

I have tried that, and it does not work.

But you said Thank you, worked like a charm!, so which is it?

Seriously, don't ever write code in string eval, seeing \\\\ \$ ..... should make your eyes bleed.

Start making subroutines, make them into modules, use require .... basically follow the advice you get, read the tutorials linked, things like that

#!/usr/bin/perl -- use strict; use warnings; use Pashnoid::Fire; my @ok_ports = Pashnoid::Fire->get_ports(); ...
lib/Pashnoid/Fire.pm
package Pashnoid::Fire; use Perl::OSType qw' is_os_type '; if( is_os_type('Windows') ){ eval q{use parent 'Pashnoid::Fire::Win32'; 1} or die $@; } else { eval q{use parent 'Pashnoid::Fire::Linux'; 1} or die $@; } 1;
lib/Pashnoid/Fire/Win32.pm
use Win32; ... sub get_ports { my( $selfOrClass ) = shift; ...
lib/Pashnoid/Fire/Linux.pm
use Device::SerialPort; ... sub get_ports { my( $selfOrClass ) = shift; ...