Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?

Re: Accessing main::Constant

by bart (Canon)
on Dec 17, 2009 at 09:02 UTC ( #813158=note: print w/replies, xml ) Need Help??

in reply to Accessing main::Constant

The reason for your error is because the snippet

sub pr { print main::FO1; }

is compiled before the the snippet

use constant { FO1 => "value" };

(BTW braces for constant?? Weird.)

so perl has to apply some heuristics while parsing the former code. An all uppercase bareword ("FO1") as a first parameter to print, makes perl assume it's a filehandle.

So what you must do is one of the following:

  1. Mark up the print line so it's clear that you don't mean a filehandle. Unfortunately, this:

    sub pr { print +main::FO1; }
    still isn't enough.. (Why not? I really expected that this would work.)

    But even if it did work, that probably would still leave you with a prototype mismatch error

  2. compile the constant definition for before you use pq;

BTW It's considered best practice to start package (and module) names with an uppercase letter.

Seeing the trouble with the former attempt at a solution, the latter definitely looks like the best option.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://813158]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (3)
As of 2018-03-20 23:28 GMT
Find Nodes?
    Voting Booth?
    When I think of a mole I think of:

    Results (261 votes). Check out past polls.