I have Tk 804.027 on Perl 5.8.6 (macosx) and it behaves the same as your 804.027 -- i.e. not as advertised. I was struck by the value "6" in the last argument passed to the validation sub. According to the docs, this arg is supposed to be:
* type of action. 1 == INSERT, 0 == DELETE, -1 if it's a
forced validation or textvariable validation
That by itself is something I'd call a bug. I also tried setting the "invalidCommand" option on Tk::Entry, to invoke a sub that resets the variable when it goes above 3 (and prints a warning), but that didn't seem to affect the behavior at all (and the sub passed as the "invalidCommand" parameter apparently never ran -- no warning was printed, the textvariable was not reset).