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

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

Hello,

I have an object oriented perl script with a top level script and a lot of perl packages. I need to declare a global variable and use it in the top level script and in one of the perl package. I tried declaring the variable with "our $variable_name" but it is not working for me. It gives the following error =>

"Global symbol "$make_AR_1" requires explicit package name at ....."

Any idea how to declare and use the global variables in perl?

I tried declaring the global variable in the top level script as well as in the perl package.

Thanks.

Replies are listed 'Best First'.
Re: How to declare and use global variables
by almut (Canon) on Nov 03, 2008 at 14:06 UTC

    From the docs:

    An "our" declaration declares a global variable that will be visible across its entire lexical scope, even across package boundaries.

    Note that separate files each do have their own lexical scope...

    Personally - in the few cases that I want to use global variables - I refer to them fully qualified ($Inst::make_AR_1 in this case). The additional typing required every time make me rethink whether I really want to have the variable global :)

      Are you consistent? That is, you always write $main::_ and @main::ARGV instead of $_ and @ARGV?

        No...  Inconsistency is a personality trait of mine which sometimes comes in handy :)

Re: How to declare and use global variables
by JavaFan (Canon) on Nov 03, 2008 at 12:57 UTC
    Could you show us some code? Otherwise, people will just have to guess what you've done wrong.
    A reply falls below the community's threshold of quality. You may see it by logging in.