http://qs321.pair.com?node_id=11136235


in reply to strange constants.pm warning

How do you init $name? Like use constant name => 42?

Then

if ( name =~ /^_?[^\W_0-9]\w*\z/ and !$forbidden{ name() }) {
might work? Conststant creates a sub witht the given name that returns the value.

Replies are listed 'Best First'.
Re^2: strange constants.pm warning
by misterperl (Pilgrim) on Aug 30, 2021 at 18:02 UTC
    use constant DB_ERROR => "database error";
Re^2: strange constants.pm warning
by misterperl (Pilgrim) on Aug 30, 2021 at 18:11 UTC
    I haven't tried to see if the sub actually gets created- Im just trying to figure out why this valid statement throws this unknown warning message.. AND to find out why the debuger break where apparently it shouldn't..

      Okay, misunderstanding. I thought this happens in your code but it is actually a line from the import() sub of constant.

      } else { # Catch-all - what did I miss? If you get this err +or, # please let me know what your constant's name was +. # Write to <rootbeer@redcat.com>. Thanks! warnings::warn("Constant name '$name' has unknown +problems"); }

      Your example works here. Perhaps some non-printable characters have sneaked in to your text file or there is a clash (other module or within your code) that uses the same constant? What happens if you change DB_ERROR to MY_DB_ERROR? No better ideas ATM, sorry.

        Your suggestion of the potential of unprintables was very astute- I removed the line and carefuly re-typed it. Same warning.

        I noticed there were 2 constants defined. I moved the 2nd to the top , and now THAT one throws the warning , but the other is fine. So whichever is first throws a warning!

        This makes me wonder- the author doesn't declare:

        use constant;
        above these pragmas. maybe that would fix this? I don't see that in the Metacpan but perhaps they're incomplete examples?

        APPRECIATE all the kind advice guys- I'll wait for the admin to get my module updated and pray for better results :)