# Why do I get a divide-by-zero error?

• Apr 6, 2013, 10:25
GPSpilot
Why do I get a divide-by-zero error?
I found this forum thanks to an old post on how to check whether a number is an integer:

Quote:

Originally Posted by KevinR
in your example this would be simple:
Code:

```    if (/\D/) {       is not an integer     }```
the regular expression checks if there are any non-digit characters in the string. Since there is a dot it returns true and the string is not an integer.

I wrote a one-line program to try this out, with unexpected results:

Code:

```perl -e 'print "Result of division is not an integer.\n" if 14/7 =~/\D/' Illegal division by zero at -e line 1.```
Why the error? Clearly, I'm dividing by seven. Here's a very similar one-liner that works as expected:

Code:

```perl -e 'print "Fourteen divided by seven is two.\n" if 14/7 == 2' Fourteen divided by seven is two.```
Why does the first give a divide-by-zero error, while the second does not?

Thanks
• Apr 6, 2013, 11:10
Jeff Mott
Probably an operator precedence issue. I suspect your code is being interpreted like this:

if 14/(7 =~/\D/)
• Apr 7, 2013, 00:35
dsheroh
Quote:

Originally Posted by Jeff Mott
Probably an operator precedence issue. I suspect your code is being interpreted like this:

if 14/(7 =~/\D/)

`perl -e 'print "Result of division is not an integer.\n" if (14/7) =~/\D/'`
`perl -e 'print "Result of division is not an integer.\n" if 14/7 != int 14/7'`