Perl divide by zero problem with varibles extracted from text

I have the following code, with give a dividing by zero problem. Obviously, the $fields[1] is not supposed to be zero. It print out a decimal number when direct print out. And it can be added to another varible with + and arithmetic is fine. But when it is in the denominator it it cuase such a message:

Illegal division by zero at E:\CruzerLock2\Stocks\quote2.pl line 151, <GEN0> lin
e 13.

The code segment look like this:


my $change = sprintf "%.2f",  ( $fields[4]) / ($fields[1])*100;



Is there something hidden in the fields[1] that couse this? Thanks
LVL 1
zzhang2006Asked:
Who is Participating?
 
ozoConnect With a Mentor Commented:
Blank is treated as 0 when used in arithmetic
$. is the input line number.
0
 
TintinCommented:
$fields[1] must be 0 to cause the error.

Add a

print "$. $fields[1]\n";

before line 151 and post the output.
0
 
zzhang2006Author Commented:
You may be right, I change it to

 print "See this->  $. $fields[1] \n";

             my $change = sprintf "%.2f",
               ( $fields[4]) /$fields[1]*100;
Then it printed:

See this->  13
Illegal division by zero at E:\CruzerLock2\Stocks\quote2.pl line 152, <GEN0> lin
e 13.

Does a blank means zero? Where is the "13" come from? How can I put a condition to check $fields[1] not zero or simply being a number? Thanks
0
Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
ozoCommented:
perldoc-q "How do I determine whether a scalar is a number/whole/integer/float"
0
 
zzhang2006Author Commented:
Great! I solved my problem. Thanks
0
 
zzhang2006Author Commented:
Great!
0
All Courses

From novice to tech pro — start learning today.