use modules OS dependent

use modules OS dependent

am 14.04.2008 14:42:57 von sledz

I'm writing an perl script which should communicate over a serial
port. The script should be able to run in Linux and Win32
environments. In both environments exist modules to access the serial
port:

Win32::SerialPort (under Windows)
Device::SerialPort (else)

I know it is possible to detect the OS using Config::Config. But it
seems not possible to use different modules depending on this
information like this:

if ( $OS eq 'WINDOWS' ) {
use Win32::SerialPort qw( :PARAM :STAT );
} else {
use Device::SerialPort qw( :PARAM :STAT );
}

What's the right way to write such an OS dependent application?

Steffen

Re: use modules OS dependent

am 14.04.2008 15:22:13 von Gunnar Hjalmarsson

sledz@dresearch.de wrote:
> I'm writing an perl script which should communicate over a serial
> port. The script should be able to run in Linux and Win32
> environments. In both environments exist modules to access the serial
> port:
>
> Win32::SerialPort (under Windows)
> Device::SerialPort (else)
>
> I know it is possible to detect the OS using Config::Config. But it
> seems not possible to use different modules depending on this
> information like this:
>
> if ( $OS eq 'WINDOWS' ) {
> use Win32::SerialPort qw( :PARAM :STAT );
> } else {
> use Device::SerialPort qw( :PARAM :STAT );
> }
>
> What's the right way to write such an OS dependent application?

I don't know about "right", but this is one way:

BEGIN {
if ( $^O eq 'MSWin32' ) {
require Win32::SerialPort;
import Win32::SerialPort qw( :PARAM :STAT );
} else {
require Device::SerialPort;
import Device::SerialPort qw( :PARAM :STAT );
}
}

--
Gunnar Hjalmarsson
Email: http://www.gunnar.cc/cgi-bin/contact.pl

Re: use modules OS dependent

am 14.04.2008 15:40:24 von sledz

On 14 Apr., 15:22, Gunnar Hjalmarsson wrote:
> I don't know about "right", but this is one way:
> ...

Thanx Gunnar. That was the solution. And sorry for my impatience. ;-)

Re: use modules OS dependent

am 16.04.2008 00:35:23 von Petr Vileta

Gunnar Hjalmarsson wrote:
> sledz@dresearch.de wrote:
>> I'm writing an perl script which should communicate over a serial
>> port. The script should be able to run in Linux and Win32
>> environments. In both environments exist modules to access the serial
>> port:
>>
>> Win32::SerialPort (under Windows)
>> Device::SerialPort (else)
>>
>> I know it is possible to detect the OS using Config::Config. But it
>> seems not possible to use different modules depending on this
>> information like this:
>>



> if ( $^O eq 'MSWin32' ) {

I prefer
if ( $^O =~ /Win32/i ) {

--
Petr Vileta, Czech republic
(My server rejects all messages from Yahoo and Hotmail. Send me your
mail from another non-spammer site please.)

Please reply to