if you don't want to go with something like
Log::Log4perl, you could reduce it to a subroutine call, to make the typing easier:
use constant DEBUG => 1;
debug("\$variable = $variable");
sub debug {
return unless DEBUG >= 1;
print 'DEBUG: ', @_, "\n";
}
you say you are not worried about execution speed, but the above can be enhanced to support lazy evaluation of potentially expensive debugging operations by using closures:
sub debug {
return unless DEBUG >= 1;
print 'DEBUG: ',
( ref $_[0] eq 'CODE' ? $_[0]->() : @_ ),
"\n";
}
that allows things like:
debug( sub { Data::Dumper->new([$variable], ["variable"])->Dump } );
and the expensive Dump operation will only be executed
if DEBUG.