[Israel.pm] catching $a, $b unnecessary my and maybe other things

Gabor Szabo gabor at pti.co.il
Sun Jun 6 23:15:13 PDT 2004


Well, I use $a, $b when writing examples of simple issues, especially for
my students. The use strict thing can get very emberassing when I am
trying to show the behaviour of use strict.
Probably I should start using other variables to avoid this.

In any case using $a and $b in live code can be considered a typical
problem of beginners, exactly the type of people whom would need some
strict-ness in the subject.

> > 2)
> > 		my $y = "positive";
> >
> > within the elsif is actually a bug.
>
> This is a bug in the program, just like a typo in the string value would
> be such bug too.

Well, not exactly.

> There is a good reason why   my $var = "value";   never produces a "used
> only once" warning. Only undeclared symbol table variables are covered by
> this warning. Declared "my" and "our" variables are excluded not to annoy
> an otherwise perfectly working code.

Sounds right but then

>
> BTW, if we speak about this example, of course you may use something like
> the following starting with perl 5.004:
>
> 	my (undef, undef, undef, undef, $mday, $mon) = localtime();
>
> but this is less readable in my opinion.


you might want to use this

 	my ($mday, $mon) = (localtime())[4,5];

or this
 	my ($mday, $mon) = (localtime)[4,5];

and avoid declaring tons of unused variables or assigning to undef.


In any of the above cases[1] of course we would have a bug as the fileds
mday and mon are the fields 3 and 4 so the correct code would be

 	my ($mday, $mon) = (localtime)[3,4];

but who can count so many undefs ? :)


Gabor

[1] you got it right though in the original version with all the variables
declared.




More information about the Perl mailing list