#!/usr/bin/perl #--------------------------------------------------------------------------- # Title: # Cross-Platform Demo - "use" right module on either Win32 or linux # Usage: # perl any_os.plx PORT # Author: # Bruce Winter brucewinter@home.net http://members.home.net/winters #--------------------------------------------------------------------------- # must be LF-only line ends to run on both platforms use strict; use warnings; our $OS_win; BEGIN { $OS_win = ($^O eq "MSWin32") ? 1 : 0; print "Perl version: $]\n"; print "OS version: $^O\n"; # This must be in a BEGIN in order for the 'use' to be conditional if ($OS_win) { print "Loading Windows module\n"; eval "use Win32::SerialPort"; die "$@\n" if ($@); } else { print "Loading Unix module\n"; eval "use Device::SerialPort"; die "$@\n" if ($@); } } # End BEGIN die "\nUsage: perl any_os.plx PORT\n" unless (@ARGV); my $port = shift @ARGV; my $serial_port; if ($OS_win) { $serial_port = Win32::SerialPort->new ($port,1); } else { $serial_port = Device::SerialPort->new ($port,1); } die "Can't open serial port $port: $^E\n" unless ($serial_port); my $baud = $serial_port->baudrate; print "\nopened serial port $port at $baud baud\n"; $serial_port->close || die "\nclose problem with $port\n"; undef $serial_port;