http://qs321.pair.com?node_id=724382


in reply to How to know if a perl script is put in the background

I think I read in "Perl Best Practices" that using -t is not always accurate. The author (Damian Conway) suggests using something like this...

use IO::Interactive qw(is_interactive); if ( is_interactive() ) { print "Running interactively\n"; }

Replies are listed 'Best First'.
Re^2: How to know if a perl script is put in the background (background vs. non-interactive)
by almut (Canon) on Nov 18, 2008 at 21:58 UTC

    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