use warnings; use strict; no warnings qw"void"; sub DEBUG () {} { package Dbglt; use overload "<", sub {}; } *< = sub { bless {}, Dbglt::; }; # for not debugging, uncomment: sub dbg () { "" } # for debugging, uncomment: #sub dbg { "" } dbg & <<'DEBUG;'; warn "debugging message"; DEBUG; warn "normal message"; __END__