Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

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 (Patriarch) 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
Domain Nodelet?
Node Status?
node history
Node Type: note [id://729032]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (2)
As of 2022-05-28 11:08 GMT
Find Nodes?
    Voting Booth?
    Do you prefer to work remotely?

    Results (99 votes). Check out past polls.