Over the years I've dabbled in perl and every once in a while I get bit by this problem. Basically strings I try and print come out mangled. As an example
#!/usr/bin/perl
use strict;
use Device::SerialPort;
use FileHandle;
my $fh = FileHandle->new;
my $port = Device::SerialPort->new("/dev/ttyACM1");
$port->databits(8);
$port->baudrate(57600); # <-- match to arduino settings
$port->parity("none");
$port->stopbits(1);
$port->dtr_active(0);
my $i=1000;
my $rt = 0;
my $rh = 0;
my $it = 0;
my $foos="";
select(STDOUT);
while($i> 0) {
my $inp = $port->lookfor;
if($inp ne "") {
if($inp =~ /Remote Temp:/) {
$rt = $inp;
$rt =~ s/Remote Temp://;
print "inp=$inp\n";
print "rt=$rt\n";
$foos="$rt does not print rt \n";
print $foos;
print "rt=$rt\n\n";
}
}
}
$port->close;
undef $port;
The output from running this is
inp=Remote Temp:22.30
rt=22.30
does not print rt
rt=22.30
Whats happening?
BTW the input is a string like "Remote Temp:22.30"