http://qs321.pair.com?node_id=1090551


in reply to How to write test code to test the perl script

A good module to start your tests with is Test::Device::SerialPort. For example:
#!/usr/bin/perl -l use strict; use warnings; use Test::Device::SerialPort qw( :STAT 0.05 ); use Data::Dumper::Concise; use Test::More; plan tests => 13; my $cfgname = "tpj4.cfg"; Test::Device::SerialPort->set_test_mode_active(1); my $ob = Test::Device::SerialPort->new('COM7'); die unless ($ob); ok( $ob->user_msg(1), 'user_msg on' ); ok( $ob->error_msg(1), 'error_msg on' ); ok( $ob->can_baud, 'can_baud' ); ok( $ob->can_databits, 'can databits' ); ok( $ob->can_parity_enable, 'can parity_enable' ); ok( scalar $ob->debug("T"), 'T' ); ok( scalar $ob->debug(), 'read debug state' ); ok( $ob->can_stopbits(1), 'can_stopbits' ); ok( $ob->can_handshake("rts"), 'set can_handshake' ); ok( $ob->write_settings, 'write settings' ); ok( $ob->save($cfgname), 'save settings' ); ok( $ob->write("AT&V\r") ); my ($result1) = $ob->input; print Dumper ("result = $result1"); ok( $ob->write("AT+CGDCONT?") ); my ($result2) = $ob->input; print Dumper ("result = $result2"); undef $ob;