package DEBUGGER; use Exporter; @ISA = qw(Exporter); $::debug_level = 0; # default debug level sub _check_debug_level { my ($debug_level_low, $debug_level_hi) = @_; $debug_level_hi ||= $::debug_level; return (($::debug_level >= $debug_level_low) && ($::debug_level <= $debug_level_hi)); } # --- break($;$) ---- # set break point. # sub break($;$) { $DB::single = _check_debug_level(@_); } push @EXPORT, 'break'; # # // break() # ------------------- # --- break_if($;$$) ---- # set conditional break point. # (could also be tied to specific # debugging levels) # sub break_if($;$$) { $DB::single = shift && (@_ && _check_debug_level(@_)); } push @EXPORT, 'break_if'; # # // break() # ------------------- sub import { my ($pkg, %args) = @_; $::debug_level = $args{debug_level} if (exists $args{debug_level}); __PACKAGE__->export_to_level(1); }