http://qs321.pair.com?node_id=470263

crenz has asked for the wisdom of the Perl Monks concerning the following question:

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:

$ perl -e 'print 4 % 0.5, "\n";' Illegal modulus zero at -e line 1. $ perl -e 'print 4 % 2.5, "\n";' 0

I would have expected these snippets to print 0 and 1.5, respectively.

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 octave (using the rem 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.

Update: 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 ;-).