Re: some proposed changes
Huw Rogers <[email protected]> Sat, 04 May 2002 22:01:00 +0900
| Newsgroups | gmane.comp.gnome.orbit.perl |
|---|---|
| Message-ID | <[email protected]> |
So an appropriate warning when a type mismatch occurs and -w is in effect, together with appropriate promotion / upcasting / autovivification? I'd like to apply that consistently throughout. -Huw > > Huw Rogers <[email protected]> writes: > > > > > > > > > Huw Rogers <[email protected]> writes: > > > > > * if a sequence is undef, it is marshalled as a zero length sequence. > > > > > Right now if it is not a true reference to an array it dies. > > > > > > > > I don't agree with this at all. > > > > > > > > $a = []; print scalar (@$a), "\n"; > > > > $a = undef; print scalar (@$a), "\n"; > > > > > > > > Are very different; the second one is a warning. > > > > > > > > Allowing this would be similar to allowing "undef" to be marshalled as > > > > an empty string without any warning, which is similar to thinking > > > > in C that "" is the same as NULL. <shudder> > > > > > > The sequence marshalling of undef is the most dubious of my proposals, > > > and I guess I should retract it. > > > > Having said that, > > > > $a = []; print scalar (@$a), "\n"; > > $a = undef; print scalar (@$a), "\n"; > > > > results in: "0" and "" being printed with no warnings. > > $ perl -we '$a = undef; print scalar (@$a), "\n";' > Use of uninitialized value in array dereference at -e line 1. > Use of uninitialized value in print at -e line 1. > > Perhaps you weren't testing with -w ... but programming Perl > without -w is akin to mountain climbing without a safety > rope... > > > In general, I'd like things to behave in a Perl like fashion, including > > "auto-vivification" of CORBA data structures as necessary. > > I certainly agree things that things should behave in > a Perl-like fashion; so I think it's not a big problem if > undef marshals like []. *but* it needs to generate a warning > when -w is used if you allow that. -- Huw Rogers <[email protected]>