Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: Perl Privvies

by xdg (Monsignor)
on Jul 17, 2006 at 02:35 UTC ( #561638=note: print w/ replies, xml ) Need Help??


in reply to Perl Privvies

I don't recall this caller-based technique to enforce privacy as being used much,

My personal opinion is that most people don't feel they "need" it. This is back to the question of "culture" vs "control". In my inside-out objects talk, I use the analogy of double-yellow lines on the road versus concrete lane barriers. (Apologies to non-US drivers -- I hope the analogy is still clear.)

  • Double-yellow line analogy: You really shouldn't drive in the wrong lane against the flow of traffic because you might get yourself or someone else killed. Of course, there's nothing to stop you except the law, which will prosecute you after the fact if you're caught and can't explain yourself well.

  • Concrete lane barrier analogy: Even if you had a really, really good reason to drive in the wrong lane, you can't. In fact, if traffic is backed up and you have an emergency in the car, you can't even make an illegal U-turn to go the other way to get back the way you came.

My point is that Perl isn't really about the second way of doing things. And I suspect that many (most?) Perl programmers are sufficiently happy with the first that at most a simple caller() check is all they deem worthwhile. Anyone who really wants around it is going to find a way and there are diminishing (or even negative) returns in the time required to even try to stop them.

Just for fun, if you really want to bend your brain in the "subterfuge race", don't forget about overriding CORE::GLOBAL::caller() or the "# line 43 Bar.pm" trick. (See the very end of perlsyn for the last one.) Even for "private" lexical subs, I bet one could get at them with PadWalker.

-xdg

Code written by xdg and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.


Comment on Re: Perl Privvies
Select or Download Code
Re^2: Perl Privvies
by Mutant (Priest) on Jul 17, 2006 at 08:20 UTC
    Really like that analogy.. explains it very clearly (which can often be difficult, especially when describing the situation to people who come from a Java (etc.) background).

      Thank you. I spent a while trying to come up with an analogy that didn't involve shotguns and living rooms or whatever is the commonly-cited analogy for encapsulation. That one never really made a lot of sense to me.

      -xdg

      Code written by xdg and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.

Re^2: Perl Privvies
by rinceWind (Monsignor) on Jul 17, 2006 at 14:21 UTC

    In the UK, as indeed in other European countries, double yellow lines are for parking restrictions, close to the gutter, by the pavement/sidewalk. Double white lines are the equivalent "do not cross" of your double yellows. We tend to use the term "crash barrier" for anything that generically stops you from driving over the central reservation.

    Good analogy though. Like it!

    --

    Oh Lord, won’t you burn me a Knoppix CD ?
    My friends all rate Windows, I must disagree.
    Your powers of persuasion will set them all free,
    So oh Lord, won’t you burn me a Knoppix CD ?
    (Missquoting Janis Joplin)

      Over here in Norway, we have double-yellows. That is to say, when there even are two lanes. Even on the main arteries through the fjord region, there are long stretches of single-lane twisties. I have great respect for the lorry drivers around here!
Re^2: Perl Privvies
by Anonymous Monk on Jul 17, 2006 at 16:58 UTC
    Of course, there's nothing to stop you except the law, which will prosecute you after the fact if you're caught and can't explain yourself well.

    To extend the analogy: the law doesn't understand drivers, driving, or automobiles, and traffic fatalities are a daily occurance, because there are so many bad drivers and so much lax enforcement... The entire state of traffic is much like those horror stories from third world dictatorships, where there are no traffic lights, rich people literally run poor people over in their cars, and the streets are rife with chaos...

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://561638]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (4)
As of 2014-07-26 14:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (178 votes), past polls