Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number

my @ARGV

by szabgab (Priest)
on Dec 08, 2008 at 20:30 UTC ( #729032=note: print w/replies, xml ) Need Help??

in reply to Little annoying mistakes ... of others

Peter Scott suggested on Perl 5 Porters to warn if a user tries to declare my @ARGV as currently it just silently hides the real @ARGV.

There are some more issues in that thread on the mailing list.

Replies are listed 'Best First'.
Re: my @ARGV
by ikegami (Pope) on Dec 08, 2008 at 21:12 UTC
    So does my $_; and my $var;. Is there a case where my doesn't create a new variable?
      my $_ is new with 5.10.0, and switches anything in the scope that by default is using the global $_ to using the lexical $_ instead.

      my @ARGV has no such magic. readline or eof will continue to default to using the global @ARGV, even though there's a lexical @ARGV in scope. This is the reason for a warning.

        My point is that I am looking for cases of Perl code that compile under use strict. Don't generate warnings under use warnings but don't do the expected by a beginner.

        After being told to use strict and declare everything with my, a beginner will go out and do just that. Declare everything with my:

        my (@ARGV, $a, $b, $_, $AUTOLOAD);
        you could give them a list of special cases but IMHO it is a waste of brain cycles - at that point in the learning curve. Probably they will not learn them and the whole thing will just confuse them.

        My plan is to provide a tool that can find such cases and warn about them.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://729032]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (5)
As of 2018-02-22 09:41 GMT
Find Nodes?
    Voting Booth?
    When it is dark outside I am happiest to see ...

    Results (289 votes). Check out past polls.