As
chromatic mentioned, there is
Win32::SerialPort. I've used this rather extensively with some Perl modules I wrote to control several amateur radio transceivers, my weather station, and some equipment I designed to interface general purpose I/O to a serial port. It works quite well, and better yet, you can port it to Linux using
Device::SerialPort.
You get a lot of control over the port, and unless you don't get too bizarre, all you need is a BEGIN code snipped to select Win32::SerialPort or Device::SerialPort based on the OS reported by $^O.
--Chris (who wonders why the first link isn't right, and second is)