Mi programa Perl está leyendo datos de un dispositivo en serie conectado a través de USB. Titulares de mi script en Perl: pseudo-¿Cómo suprimir las advertencias de Perl emitidas desde dentro del código de un módulo cargado?
use warnings;
use strict;
use Device::SerialPort;
my $PortObj = tie(*$handle , "Device::SerialPort" , $PortName) or die "Cannot open serial port: $!\n";
while (1) {
my $readLength = read($handle , my $frameData , $frameLength)
}
todo trabaja muy bien e incluso cuando me desconecte el dispositivo del USB que soy capaz de recuperarse de esa situación, cuando el archivo de dispositivo desaparece y vuelve a aparecer. Puedo detectar todos los errores generados en mi propio script, pero los módulos cargados (Device :: SerialPort) también generan advertencias y no quiero que aparezcan en mi registro.
¿Puedo agregar algún tipo de bandera a mi código por lo que no veo estas advertencias específicas? Para mí es importante que solo se eliminen las advertencias de los módulos, no las advertencias de mi propio script. Actualmente se parece a esto:
[/dev/ttyUSB1] 0x0020 : 00 00 00 00 00 00 00 00 00 AA 93 82 73 68 5E 58 : ............sh^X [/dev/ttyUSB1] 0x0030 : 55 54 52 52 4F 4E 50 51 50 00 00 00 00 00 00 00 : UTRRONPQP....... Use of uninitialized value $count_in in addition (+) at /usr/lib/perl5/Device/SerialPort.pm line 2214. Use of uninitialized value $string_in in concatenation (.) or string at /usr/lib/perl5/Device/SerialPort.pm line 2232. [/dev/ttyUSB1] Restart required! [/dev/ttyUSB1] Cannot open serial port: No such file or directory [/dev/ttyUSB1] Cannot open serial port: No such file or directory [/dev/ttyUSB1] Cannot open serial port: No such file or directory [/dev/ttyUSB1] 0x0000 : 41 42 01 40 71 01 1C E4 80 99 80 80 80 80 00 00 : [email protected] [/dev/ttyUSB1] 0x0010 : 00 03 00 00 83 00 01 01 00 00 00 00 00 00 00 00 : ................
Por lo tanto, se trata de las dos Use of uninitialized value
advertencias que quiero deshacerse de él. Las otras advertencias son mi propio registro.
- libdevice-serialport-perl 1.04-2build1
- v5.12.4 Perl
Sería una buena idea reportar esos errores al autor. – ikegami
Seguido de su consejo. – jippie