Looking at the implementation of IO::Interactive, it's essentially -t plus some
code to handle *ARGV magicness. In other words, it shares the same
problem of possibly producing incorrect results when being (mis)used to test if something is running in the background (e.g. when a script is
sent into the background using &, executed from an (interactive)
command line):
$ ./724312.pl
Running interactively
$ stty -tostop # just in case
$ ./724312.pl &
[1] 13831
$ Running interactively
[1]+ Done ./724312.pl