2013-02-19 23 views

回答

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; 
} 
+0

我只添加了'$ SIG {__ WARN__} = sub {$ DB :: single = 1; CORE :: warn(@_)};'在調試器中用's'退回到我想要的位置。 – knarf 2013-02-19 18:23:49

+0

如果您不介意必須離開信號處理程序,那也可以工作。 – mob 2013-02-19 22:25:13

1
use warnings qw(FATAL); 

這將警告轉換爲錯誤的詞彙範圍,這將自動導致調試器打破。