oct is a reserved word due to oct() function thus causing months to fail. I had to consult Google to check whether oct() is in fact a builtin because I never use it. My first guess was that may() was some sort of uberobscure conditional. It also occured to me that dec() or sep() might exist but it appears not.
Comment on Re: Why use strict is good, and barewords are bad