Aaron Sherman <[EMAIL PROTECTED]> writes:

> On Mon, Oct 22, 2001 at 07:39:44PM +0100, Piers Cawley wrote:
> 
>> Yeah, but it's correct. If you extract something and get garbage then
>> you're going to screw your average up. Admittedly, in 400,000 lines,
>> it's unlikely to shift the average by much, but it will shift it. 
> 
> No, I'm interpreting unknown values as zero. My average is correct.
> If you want to argue that I should be treating them as something
> else, that's your lookout, but I'm happy with that interpretation.

If you want to interpret unknown values as zero then you can make that
explicit. Which is a good thing, because it makes clarifies the intent
of your code.


> What REALLY worries me is that values that seem to be numbers, but are
> in fact garbage ARE going to screw my average up. I dare Perl6 to fix
> that for me.

It's not going to. Getting NaN as a result in this context should be a
*really* big clue that Perl's found some garbage that it didn't
understand. If you want to know where then CHECK YOUR VALUES.

>> Of course, this is assuming there's no difference between:
>> 
>>     $total += substr($_, 22, 2); # implicit numification
>> 
>>     $total += +substr($_, 22, 2); # explicit numification
> 
> If we were to decompile the first example, it would not be the same
> as the second? Is there an implied operator here that I'm not seeing?
> How does it behave? According to Larry, unary + forces a numeric
> context, but you're saying that a numeric context can be distinguished
> from a unary +
> 
> I'm confused.

No. I'm saying that this may be a possibility. But, frankly, it looks
like scary DWIMmery to me. I'd rather have it return NaN in both
contexts. 

>> Which might be controllable via pragma.
> 
> As long as the pragma leaves:
> 
>       perl -nle '$t+=$_;END{print $t}'
> 
> alone, I'm OK. If blank lines will cause that to choke, I'm an
> unhappy camper.
> 
>>         if ($val ne 'NaN') { # Ugly, gets 'round the IEEE thing
> 
>       sub notnan ($number) {
>               return $number >= -Inf;
>       }
> 
>> > More, someone has mentioned the %x{$_}++ feature, which IMHO, MUST
>> > continue to work.
>> 
>> And it will, since it has nothing whatsoever to do with string
>> numification. 
>> 
>> %x{non_existent}++ # Doesn't do numification. Autovivifies an entry in
>>                    # %x, with value 'undef', which numfies to 0.
> 
> Actually, numification of undef was the entry point to this thread,
> so my point remains. If notnan(undef), I'm happy, else I am become
> concerned....

Ah yes. That suggestion was so self evidently stupid it slipped my
mind. Though the stuff discussed above is definitely about
numification of strings.

-- 
Piers

Reply via email to