in reply to code that runs (and works) on both Linux and Win32

:) Um, asked and answered in mention a non-installed module in script

See also Simple Module Tutorial and Module::Load

  • Comment on Re: code that runs (and works) on both Linux and Win32

Replies are listed 'Best First'.
Re^2: code that runs (and works) on both Linux and Win32
by pashanoid (Scribe) on Sep 02, 2011 at 08:35 UTC
    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.

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