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

Re^6: Stupid question (mortalization)

by runrig (Abbot)
on May 11, 2012 at 23:52 UTC ( #970118=note: print w/ replies, xml ) Need Help??


in reply to Re^5: Stupid question (mortalization)
in thread Stupid question

Seems like there are just bugs related to altering function arguments, perhaps when they also refer to more global variables, and maybe especially @ARGV. E.g. (copied and modified from bizarre Carp - also I posted a patch in that thread):

use Carp; Main(@ARGV); sub Main { my $first = shift @ARGV; $ARGV[0] = [qw(1 2 3)]; confess "Rubbish"; exit; }

I get different results on different versions of perl (tested on 5.8.4, 5.8.8, and 5.14.1). And different results when I comment out the assignment to $ARGV[0].

But passing @ARGV to Main() and then modifying @ARGV (and Getopt::* modules modify @ARGV by default -- so yes @_ should be copied and parsed instead) seems to be a bad thing (bad in that it triggers bugs in perl/Carp, not that you shouldn't be allowed to do it and perl should blow up).


Comment on Re^6: Stupid question (mortalization)
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (8)
As of 2014-07-13 05:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    When choosing user names for websites, I prefer to use:








    Results (247 votes), past polls