package Foo; use constant DEBUG => 2; warn "something happened" if DEBUG; warn "something interesting happened" if DEBUG > 1; #### package Foo; use constant DEBUG => do {my $p=__PACKAGE__; ",$ENV{DEBUG}," =~ m/,($p|all)(=(.*?))?,/s && ($2 ? $3 : 1) }; warn "something happened" if DEBUG; warn "something interesting happened" if DEBUG > 1; #### # set DEBUG to 1 in package main % setenv DEBUG main % perl foo.pl # set DEBUG to 5 in package main % setenv DEBUG main=5 % perl foo.pl # set DEBUG to 2 in package main and 3 in package Foo % setenv DEBUG Foo=3,main=2 % perl foo.pl # set DEBUG to 99 in all packages % setenv DEBUG all=99 % perl foo.pl