http://www.perlmonks.org?node_id=11136227

misterperl has asked for the wisdom of the Perl Monks concerning the following question:

...using constants.pm 1.04, I keep hitting this in the else: "Constant name '$name' has unknown problems" , which can only happen if:
if ($name =~ /^_?[^\W_0-9]\w*\z/ and !$forbidden{$name}) {
is false. So, I set a break like this:
<DBG>b 52 $name !~ /^_?[^\W_0-9]\w*\z/
and sure enough, it broke there. (My name is simple, DB_ERROR.) That's when things got weird, at the break, I tried:
<DBG>x $name =~ /^_?[^\W_0-9]\w*\z/ 1
DB<4> x $name !~ /^_?[^\W_0-9]\w*\z/ 0 ''
..another mystery, how the HECK DID IT break there? I tried:
<DBG>b 52 ! $name =~ /^_?[^\W_0-9]\w*\z/
which looks logically the same as <code> $name !~ /^_?^\W_0-9\w*\z/ <code> but, now more weirdness, it no longer breaks there.

My spyder sense tells me this is due to some pragma/debugger weirdness, since I'm breaking in the pragma. But the issue is there is nothing wrong with my use statement, yet it throws that unknown error warning, and I was trying to see why.

Wisdom please?