Solved

Perl divide by zero problem with varibles extracted from text

Posted on 2008-10-20
6
805 Views
Last Modified: 2013-12-12
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
0
Comment
Question by:zzhang2006
  • 3
  • 2
6 Comments
 
LVL 48

Expert Comment

by:Tintin
ID: 22764142
$fields[1] must be 0 to cause the error.

Add a

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

before line 151 and post the output.
0
 
LVL 1

Author Comment

by:zzhang2006
ID: 22764311
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
 
LVL 84

Accepted Solution

by:
ozo earned 500 total points
ID: 22764361
Blank is treated as 0 when used in arithmetic
$. is the input line number.
0
Backup Your Microsoft Windows Server®

Backup all your Microsoft Windows Server – on-premises, in remote locations, in private and hybrid clouds. Your entire Windows Server will be backed up in one easy step with patented, block-level disk imaging. We achieve RTOs (recovery time objectives) as low as 15 seconds.

 
LVL 84

Expert Comment

by:ozo
ID: 22764364
perldoc-q "How do I determine whether a scalar is a number/whole/integer/float"
0
 
LVL 1

Author Comment

by:zzhang2006
ID: 22764429
Great! I solved my problem. Thanks
0
 
LVL 1

Author Comment

by:zzhang2006
ID: 22764431
Great!
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Let’s list some of the technologies that enable smooth teleworking. 
In this article, you will read about the trends across the human resources departments for the upcoming year. Some of them include improving employee experience, adopting new technologies, using HR software to its full extent, and integrating artifi…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
The viewer will learn how to successfully create a multiboot device using the SARDU utility on Windows 7. Start the SARDU utility: Change the image directory to wherever you store your ISOs, this will prevent you from having 2 copies of an ISO wit…

895 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now