"my" suppresses "used only once" warnings

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View
Here we see "my" suppresses "used only once" warnings.
And I thought "my" was all good.

$ perl -we 'use diagnostics; $g=1; my $h=2;'
Name "main::g" used only once: possible typo at -e line 1 (#1)
    (W once) Typographical errors often show up as unique variable names.
    If you had a good reason for having a unique name, then just mention it
    again somehow to suppress the message.  The our declaration is
    provided for this purpose.

    NOTE: This warning detects symbols that have been used only once so $c, @c,
    %c, *c, &c, sub c{}, c(), and c (the filehandle or format) are considered
    the same; if a program uses $c only once but also uses any of the others it
    will not trigger this warning.

What about $h? "perldoc -f my" doesn't warn about no warnings. Even
perlsub doesn't say...

Re: "my" suppresses "used only once" warnings

Quoted text here. Click to load it

The "used once" warning is useful for detecting things like (when you
are not using strict -- and you should use strict):


# 100 more lines

$STUPID0 = 0;

When you use strict, you have to declare the variables you use. If you

my $STUPIDO = 1;

why should you get a warning? After all, you have explicitly told the
compiler, you want a variable named $STUPIDO. The same goes for

my $STUPID0 = 0;

If you use strict as you should, you will find out about typos:

use strict;

my $STUPIDO = 1;

# 100 more lines


Now, if you do

my $STUPIDO = 1;

# 100 more lines

my $STUPIDO = 0;

you will also get an appropriate message.


(remove .invalid and reverse each component for email address)

comp.lang.perl.misc guidelines on the WWW:
http://www.rehabitation.com/clpmisc /

Site Timeline