Il mio programma Perl sta leggendo i dati da un dispositivo seriale collegato tramite USB. Prima pagina del mio script in Perl: pseudo-Come sopprimere gli avvisi Perl emessi dal codice di un modulo caricato?
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)
}
Tutto funziona bene e anche quando si scollega il dispositivo dalla USB sono in grado di recuperare da questa situazione, quando il file dispositivo scompare e riappare. Posso catturare tutti gli errori generati dal mio script, ma i moduli caricati (Device :: SerialPort) generano anche gli avvisi e non voglio che vengano visualizzati nella mia registrazione.
Posso aggiungere una sorta di flag al mio codice in modo da non visualizzare questi avvisi specifici? Per me è importante che solo gli avvertimenti dei moduli siano soppressi, non gli avvertimenti del mio script. Attualmente sembra che questo:
[/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 : ................
Così è circa i due Use of uninitialized value
avvertimenti che voglio sbarazzarsi. Gli altri avvisi sono i miei stessi log.
- libdevice-serialport-perl 1.04-2build1
- perl v5.12.4
Sarebbe una buona idea riportare tali errori all'autore. – ikegami
Seguito il vostro consiglio. – jippie