Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Re^4: aliasing arrays using typeglob under strict

by BrowserUk (Patriarch)
on Feb 08, 2013 at 16:41 UTC ( [id://1017856]=note: print w/replies, xml ) Need Help??


in reply to Re^3: aliasing arrays using typeglob under strict
in thread aliasing arrays using typeglob under strict

One may say that this effect may be avoided by remembering to carefully localize all package variables in all called functions,

Unintended side effects are unintended side effects:

sub G { our @ydata = 'Gaaaahh!'; };; sub F{ my @a = @_; print qq{pre-G: (@ydata)}; G(); print qq{post-G: (@ydata)}; };; F(1..4);; pre-G: () post-G: (Gaaaahh!)

The problem has nothing to do with aliasing and everything to do with not localising!

Your previous quote is better stated as: "don't use code that uses globals for no good reason.".

Which is doubly true for code that fails to localise its use of globals.

a healthy dose of paranoia.

Sorry, but I will always consider 'paranoia' in programming -- and pretty much everything else for that matter -- with exclusively negative connotations.

The teaching of 'paranoia', rather than 'knowledge', in an attempt to avert disaster, is always a counter productive and ultimately futile process.

With paranoia, one can only hope to avert bad consequences; with knowledge one can know you have.

Don't hope, know!


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

Replies are listed 'Best First'.
Re^5: aliasing arrays using typeglob under strict
by AnomalousMonk (Archbishop) on Feb 08, 2013 at 17:53 UTC
    Unintended side effects are unintended side effects... The problem has nothing to do with aliasing and everything to do with not localising!

    But surely the soul of wisdom is to avoid unintended consequences.

    With paranoia, one can only hope to avert bad consequences; with knowledge one can know you have.
    Don't hope, know!

    Again, this is utterly without consideration of effects on performance, but in general, shouldn't one prefer the avoidance of a coding technique that depends on local-izing everything in sight in favor of one that takes advantage of the lexical scope associated with every subroutine definition by using only lexical variables? By so doing, one may know one has averted bad consequences – at least outside the lexical scope of the subroutine one is examining at the moment. (BTW: Is it possible to define a subroutine without creating a unique lexical scope for it? Offhand, I can't see a way.)

    Oh well... Perhaps not even USD0.02-worth on this one. Anyway, I have to go shovel some snow now.

      But surely the soul of wisdom is to avoid unintended consequences.

      And

      Is it possible to define a subroutine without creating a unique lexical scope for it? Offhand, I can't see a way.

      No, But that doesn't completely negate the possibilities of unintended consequences.

      Eg. As you follow the fairly common practice of placing your subroutines after your 'main' code; the possibilities for unintentional (and silent) closures abound.

      Again, this is utterly without consideration of effects on performance,

      Out of context, that sounds like I'm favoring this technique for performance. But if you read back, I'm most definitely not.

      (More on this in response to your other post.)

      that depends on local-izing everything in sight

      Such exaggerations do not advance the discussion :)


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others about the Monastery: (9)
As of 2024-03-28 09:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found