我有一个有时会发出警告的代码路径。由于这条路径经常使用很多次,所以我不希望每次通过都会中断。我怎样才能在发出警告的时候打破?
答案 0 :(得分:3)
你可以使用“信号处理程序”作为警告并设置一个标志,然后在设置标志时中断。
our $warn_flag = 0;
$SIG{__WARN__} = sub { $warn_flag = 1; CORE::warn(@_) };
...
for $i (1 .. 1_000_000_000) {
do_something_that_might_warn();
$DB::single ||= $warn_flag;
$warn_flag = 0;
}
答案 1 :(得分:1)
use warnings qw(FATAL);
这会将警告转换为词法范围内的错误,这会自动导致调试器中断。