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

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

Monks, I come to you today with more of a philosophical question. I'm writing a script with about six highly interrelated subroutines -- at various points they all pass or get the same ten or so variables to or from each other. Most of these variables are hashes or arrays, so there's a lot of referencing and dereferencing going on as well. And in almost all cases, none of the subroutines are actually modifying these variables once they get them, just using them to calculate other things. My understanding of best practices is that everything should be contained to avoid any accidental contamination, and global variables should be used as little as possible. But in this case, a bunch of global variables would probably simplify things considerably. Is it still advisable to pass the variables and keep things local, or is it sometimes acceptable to keep a bank of globals?