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