perl – 更改qq(参数“%s”在%s行%d的排序中不是数字.“消息)

前端之家收集整理的这篇文章主要介绍了perl – 更改qq(参数“%s”在%s行%d的排序中不是数字.“消息)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何更改排序函数在数字排序期间找到非数字值时抛出的Perl警告消息?

$cat t.pl
#!/usr/bin/perl
use strict;
use warnings;
my @ulist = qw(1 2 5x 4 3);
my @slist = sort { $a <=> $b } @ulist;

$t.pl
Argument "5x" isn't numeric in sort at ./t.pl line 5.

我希望能够使代码打印出来:

$t.pl
./t.pl: Argument "5x" isn't numeric in sort.

解决方法

在不了解这是否是个好主意的情况下,您可以使用__WARN__信号处理程序来切断堆栈跟踪信息.

local $SIG{__WARN__} = sub { 
    my $msg = pop(@_); 
    $msg =~ s/ at \S+ line \d+//;
    print STDERR @_,$msg
};
my @slist = sort { $a <=> $b } @ulist;

猜你在找的Perl相关文章