in reply to Inconsistency of 'Use of uninitialized value in scalar assignment' warning
As LanX observes, there are really two separate issues here:
(1) $bar{not_existing} vs. $bar($baz}
$bar{undef()} generates the same Use of uninitialized value in hash element error. The difference is that $bar{not_existing} only happens (in this case) to access a non-existent element, but $bar($baz} (with $baz undefined) necessarily does so. So the latter case is guaranteed to fail, making it safe to issue a warning; but the former case might arise within otherwise-valid programming logic, so a warning is not issued. Well, that’s my guess, anyway.
(2) use of uninitialized value in scalar assignment within sub foo
I don’t know what makes the difference here, but I note that under some circumstances the warning goes away:
#! perl use strict; use warnings; use Data::Dump; sub foo { dd \@_; my $val = $_[0]; } my %bar; my $baz; foo( $bar{$baz} );
Output:
18:39 >perl 814_SoPW.pl Use of uninitialized value $baz in hash element at 814_SoPW.pl line 28 +. [undef] 18:39 >
Maybe a product of the way aliasing works?
Hope that helps (a little),
| Athanasius <°(((>< contra mundum | Iustus alius egestas vitae, eros Piratica, |
|
|---|