As someone who has just posted a couple of times about undocumented behavior, I will not protest too loudly about being called on this one. Still, it's a convention that has been relied on and seems unlikely to change.
The obvious fix is:
sub ceil {
my $n = shift;
int($n) + ($n > int($n) ? 1 : 0);
}
Caution: Contents may have been coded under pressure.