IO::Interactive

IO::Interactive is a Perl module with utilities for interactive I/O.
Download

IO::Interactive Ranking & Summary

Advertisement

  • Rating:
  • License:
  • Perl Artistic License
  • Price:
  • FREE
  • Publisher Name:
  • Damian Conway
  • Publisher web site:
  • http://search.cpan.org/~dconway/

IO::Interactive Tags


IO::Interactive Description

IO::Interactive is a Perl module with utilities for interactive I/O. IO::Interactive is a Perl module with utilities for interactive I/O.SYNOPSIS use IO::Interactive qw(is_interactive interactive busy); if ( is_interactive() ) { print "Running interactivelyn"; } # or... print {interactive} "Running interactivelyn"; $fh = busy { do_noninteractive_stuff(); }This module provides three utility subroutines that make it easier to develop interactive applications...is_interactive()This subroutine returns true if *ARGV and *STDOUT are connected to the terminal. The test is considerably more sophisticated than: -t *ARGV && -t *STDOUTas it takes into account the magic behaviour of *ARGV.You can also pass is_interactive a writable filehandle, in which case it requires that filehandle be connected to a terminal (instead of *STDOUT). The usual suspect here is *STDERR: if ( is_interactive(*STDERR) ) { carp $warning; }interactive()This subroutine returns *STDOUT if is_interactive is true. If is_interactive() is false, interactive returns a filehandle that does not print.This makes it easy to create applications that print out only when the application is interactive: print {interactive} "Please enter a value: "; my $value = ;You can also pass interactive a writable filehandle, in which case it writes to that filehandle if it is connected to a terminal (instead of writinbg to *STDOUT). Once again, the usual suspect is *STDERR: print {interactive(*STDERR)} $warning;busy {...}This subroutine takes a block as its single argument and executes that block. Whilst the block is executed, *ARGV is temporarily replaced by a closed filehandle. That is, no input from *ARGV is possible in a busy block. Furthermore, any attempts to send input into the busy block through *ARGV is intercepted and a warning message is printed to *STDERR. The busy call returns a filehandle that contains the intercepted input.A busy block is therefore useful to prevent attempts at input when the program is busy at some non-interactive task. Requirements: · Perl


IO::Interactive Related Software