Mini Shell
#!/usr/bin/perl
# This example demonstrates how to use the debugging features in
#expect. They're reasonably straghtforward.
#
# There are 3 basic ways you can debug a script:
#
# 1. Log_Stdout
#
# By setting $Expect::Log_Stdout you control whether or not processes
#will echo to the screen or not. Having it turned on can be helpful so you
#can watch what a process is doing. Alternately, for a process that is already
#running you can do $process->log_stdout(1); which will turn on process
#output for the process from that instant on. $process->log_stdout(0) will
#turn it off.
# By default $Expect::Log_Stdout == 1. Initialized handles (discussed
#later) may also echo to STDOUT, but they don't do so by default. You have
#to manually tell them to echo. You wouldn't want your log file jabbering at
#you would you? Anyway, that will make sense later.
#
# 2. Exp_Internal
#
# Setting $Exp_Internal=1 (or $process->exp_internal(1)) will output
#pattern matching information for expect() calls to STDERR. You can trap
#this by doing "perl expect_script.pl 2>debug.out" if you are using any of
#the bourne-ish shells. For people who use csh, don't. "exec bash" will take
#care of that straightaway. This is handy so program output and debugging output
#don't go to the same place.
#
# 3. Debug
#
# Setting $Expect::Debug = debug level(or $process->debug(debug level))
#will show other stuff, such as pids, output during interaction, and other
#miscellaneous output not covered by the above two items. In combination with
#Exp_Internal you can capture a lot of good information about what your script
#is doing. Debugging info also goes to STDERR.
#
#
# This example will show (lots) of debugging info.
use Expect;
$Expect::Log_Stdout=1;
$Expect::Debug=3;
$Expect::Exp_Internal=1;
# lpc is a bsd printer control program. It's included in every Unix I
# deal with.
$lpc = Expect->spawn("lpc");
$lpc->expect(30,"lpc> ") && print $lpc "stat\r";
$lpc->hard_close();
Zerion Mini Shell 1.0