great explanation. Makes perfect sense now. Many thanks.

On Mar 18, 2012, at 9:52 AM, Daniel Perrett <[email protected]> wrote:

> This is what looks like is happening:
> 
> $h is the empty string. $nodata_valu is a very big number.
> 
> ($h == $nodata_valu) generates a warning because $h is not a number, it is 
> the empty string. It also is false, so the 'else' is executed.
> 
> The sprintf statement coerces $h to a number then converts that number to a 
> string with 2 decimal places.
> 
> The value of the sprintf is assigned to $h.
> 
> The debug line then prints the two scalars.
> 
> Daniel
> 
> [email protected] wrote: -----
> To: dancer-users <[email protected]>
> From: "Mr. Puneet Kishor" 
> Sent by: [email protected]
> Date: 03/18/2012 02:54AM
> Subject: [Dancer-users] befuddling Dancer error
> 
> I have the following code
> 
>     if (defined $h) {
>         $h = ($h == $nodata_valu) ? $nodata_desc : sprintf("%.2f", $h);
>         debug "h: $h, nodata: $nodata_valu";
>     }
> 
> which results in the following log entry
> 
>     [63130] debug @0.154003> [hit #4]h: 0.00, nodata: -3.40282346638529e+38
> 
> Yet,I get the following Dancer error
> 
>     Warning caught during route execution: Argument "" isn't numeric in 
> numeric eq (==) at  
>         if (defined $h) {
>             $h = ($h == $nodata_valu) ? $nodata_desc : sprintf("%.2f", $h); 
>             debug "h: $h, nodata: $nodata_valu";
>         }
> 
> 
> what gives?
> 
> 
> 
> --
> Puneet Kishor
> _______________________________________________
> Dancer-users mailing list
> [email protected]
> http://www.backup-manager.org/cgi-bin/listinfo/dancer-users
_______________________________________________
Dancer-users mailing list
[email protected]
http://www.backup-manager.org/cgi-bin/listinfo/dancer-users

Reply via email to