perlquestion
crenz
<p>Even after programming Perl for quite a few years, you can still be bitten by unexpected behaviour exhibited by Perl's built-in operators. Today, I was trying to calculate the modulo of several values. The catch: The modulus is not an integer, but a fraction! I expected this to just work but apparently, it does not:</p>
<code>
$ perl -e 'print 4 % 0.5, "\n";'
Illegal modulus zero at -e line 1.
$ perl -e 'print 4 % 2.5, "\n";'
0
</code>
<p>I would have expected these snippets to print 0 and 1.5, respectively.</p>
<p>In my application, I can circumvent this easily, but I'm just wondering: How come Perl isn't just doing “the right thing” here? Just to check my own sanity, I tried the same calculations using <a href="http://www.octave.org/">octave</a> (using the <i>rem</i> function), which deals with fractions no problem. MS' documentation for JScript also lists an example using fractions. Given that this behaviour is not documented, I'd consider it a bug in the 5.8.1 version that I use.</p>
<p><b>Update:</b> Thanks, I overlooked the part where it says “integer operands”… I still think it's a default functionality that should be implemented, though. If I want C compatibility, I'll use C ;-).</p>