in reply to Re: 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. The script executes without warnings, but produces no com ports. However if I use the same modules outside of eval, they work fine. But this way the script will produce errors in Linux.
  • Comment on Re^2: code that runs (and works) on both Linux and Win32

Replies are listed 'Best First'.
Re^3: code that runs (and works) on both Linux and Win32
by Anonymous Monk on Sep 02, 2011 at 09:13 UTC

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