This is a difficult question to answer, and the best answer is only a guess. What do you really want to know? If you merely want to know if one of your filehandles is connected to a terminal, you can try the
-t file test:
if( -t STDOUT ) {
print "I'm connected to a terminal!\n";
}
However, you might be out of luck if you expect that means there is a real person on the other side. With the
Expect module, another program can pretend to be a person. The program might even come close to passing the Turing test.The
IO::Interactive module does the best it can to give you an answer. Its is_interactive function returns an output filehandle; that filehandle points to standard output if the module thinks the session is interactive. Otherwise, the filehandle is a null handle that simply discards the output:
use IO::Interactive;
print { is_interactive } "I might go to standard output!\n";
This still doesn't guarantee that a real person is answering your prompts or reading your output.
If you want to know how to handle automated testing for your distribution, you can check the environment. The CPAN Testers, for instance, set the value of
AUTOMATED_TESTING:
unless( $ENV{AUTOMATED_TESTING} ) {
print "Hello interactive tester!\n";
}




Help










