#!/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();