如何更改排序函数在数字排序期间找到非数字值时抛出的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;