http://qs1969.pair.com?node_id=1102146


in reply to Re: Seeking the right way to override global variables
in thread Seeking the right way to override global variables

When you say :

"It is usually a good idea to put "global variables" into a Common module of some kind, perhaps which exposes an object that simply serves as the repository of those values."

Do you mean explicit package + object oriented?

I already use a separate perl module and I'm thinking using explicit package name in addition. But I don't want to put object oriented programming with the rest of the code, which is not.

But I fully agree with you that explicit package name is a better practice (even for small projects like mine, it doesn't hurt).

And yes I already put use strict and use warnings everywhere :D

Thank you for your answer.

Replies are listed 'Best First'.
Re^3: Seeking the right way to override global variables
by Laurent_R (Canon) on Sep 26, 2014 at 17:50 UTC
    Then you could use a pseudo-object, for example storing your global variables in a lexical hashref in the const module, and have in that same module a get and a set functions to access the hash that you export. Something like this:
    use strict; use warnings; use Exporter; our @ISA = 'Exporter'; our @EXPORT = qw(get set); my $private_hash_ref = {VAR1 => "one", VAR2 => "two"}; sub get { my $key = shift; return $private_hash_ref->{$key};} sub set { my ($key, $value) = @_; $private_hash_ref->{$key} = $value;}
    And then in your main code or other module, you just use the set and get functions.