Perlで整数判定がしたい

Perlで整数判定がしたいので調べてみた。
「切り捨て」に int() は使うべからず - にぽたん研究所曰くint()関数はダメで、POSIX::ceil/POSIX::floorかsprintfを使うべきらしい。

POSIX::floorを使ってみたけど、微妙な条件だと上手くいかない。

use POSIX;
sub is_int($) {
    my ($n) = @_;
    $n == POSIX::floor($n);
}

print 125**(1/3),"\n"; # => 5
print is_int(125**(1/3)),"\n"; # => false

しょうがないので、sprintfを使った。

sub is_int($){
    my ($n) = @_;

    "$n" eq sprintf("%d",POSIX::ceil($n))
}

print 125**(1/3),"\n"; # => 5
print is_int(125**(1/3)),"\n"; # => true