IMHO there is no possibility in Perl to distinct between:
my $a
and
my $a=undef
"Assigning the value undef" (dangerous discription) of a scalar is always completely transparent to "has no value at all".
If I'm wrong, I'd appreciate if someone can show me code proving me false.
Furthermore you can't safely use "value comparisons" with undef.
DB<33> my $a; print $a==undef
1
DB<34> my $a; print $a==0
1
DB<35> my $a=undef; print $a==0
1
DB<36> my $a=undef; print $a eq undef
1
DB<37> my $a=undef; print $a eq 0
DB<38> my $a=undef; print $a eq ""
1
you need to use the special builtin defined.
Thats why I think it's the better stile to avoid undef if not necessary.
When you need to reset already declared and potentially initialized variables (in the sense of "setting to an non intialized state"):
for multiple vars you can assign an empty list:
($a,$b)=();
to reset a single scalar you can alternatively chose to write:
undef $a;
(but actually I never do this myself)
|