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


in reply to Re^2: Best practices - if any?
in thread Best practices - if any?

I must have been dreaming all these years I've kept all my data in function parameters. As for passing refs reinventing globals, I think you're mistaken. Maybe it makes sense if you're in the habit of addressing your variables by memory location (as in C; pointer arithmetic, for example). The only time a reference is global in Perl is if you've stored it in a global variable (although I'm sure someone is going to pop up with a counter-example). However, disregard that argument for a moment. You're definitely missing one of the key advantages of parameter passing - it effectively documents the flow of a variable through your code, so that when you change a variable you can trace the effects of that change. The problem with globals is that you can change the value of a variable and then find it hard to figure out what's affected downstream; and the bigger the codebase grows, the harder it becomes.

Tim

Replies are listed 'Best First'.
Re^4: Best practices - if any?
by AriSoft (Sexton) on Feb 22, 2010 at 15:29 UTC
    "when you change a variable you can trace the effects of that change"

    I forget so tell that this program is using threads and flow of control is made by locks, not by function parameters. I had to create a shared locking module to allow read by many write by one type access control. (At least I did not find suitable from CPAN.)

    Some of us are putting global variables to a database - do you believe that?