gpt4 book ai didi

linux - 如何抑制从已加载模块代码中发出的 Perl 警告?

转载 作者:IT王子 更新时间:2023-10-29 00:11:19 26 4
gpt4 key购买 nike

我的 Perl 程序正在从通过 USB 连接的串行设备读取数据。我的伪 Perl 脚本的标题:

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 )
}

一切正常,即使当我从 USB 拔下设备时,当设备文件消失并重新出现时,我也能够从那种情况中恢复过来。我可以捕获我自己的脚本产生的所有错误,但加载的模块 (Device::SerialPort) 也会产生警告,我不希望它们出现在我的日志记录中。

我可以在我的代码中添加某种标志,这样我就不会看到这些特定的警告吗?对我来说重要的是只抑制来自模块的警告,而不是来 self 自己的脚本的警告。目前它看起来像这样:

[/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 : AB.@q...........[/dev/ttyUSB1]   0x0010 : 00 03 00 00 83 00 01 01 00 00 00 00 00 00 00 00 : ................

所以这是关于我想摆脱的两个 Use of uninitialized value 警告。其他警告是我自己的日志记录。

  • libdevice-serialport-perl 1.04-2build1
  • perl v5.12.4

最佳答案

您可以尝试拦截警告:

$SIG{'__WARN__'} = sub { warn $_[0] unless (caller eq "Device::SerialPort"); };

关于linux - 如何抑制从已加载模块代码中发出的 Perl 警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10370724/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com