Good question. Sometimes -t STDIN and -t STDOUT can give clues, sometimes not.
if (-t STDIN && -t STDOUT) { print "Now what? "; }On POSIX systems, you can test whether your own process group matches the current process group of your controlling terminal as follows:
use POSIX qw/getpgrp tcgetpgrp/; open(TTY, "/dev/tty") or die $!; $tpgrp = tcgetpgrp(fileno(*TTY)); $pgrp = getpgrp(); if ($tpgrp == $pgrp) { print "foreground\n"; } else { print "background\n"; }