
	This is a very brief script that demonstrates send_slow(). This
command is chiefly for talking to modems and the like where if you send
it stuff too fast it can get mad at you.
	Also demonstrated is how to talk to a bidirectional device
handle.
	I must confess to not trying this since I don't have a machine
where the modem isn't currently in use, but it *looks* good.

#!/usr/bin/perl

use Expect;

$device="/dev/modem" unless $device = shift(@ARGV);

# open the device
open(DEVICE,"+>$device") || die "Couldn't open $device, $!\n";

# Expectize it. note the \* which we do because we didn't use the OO
# method of opening the device.
$modem=Expect->exp_init(\*DEVICE);
# Let's watch the output. Once again, output isn't automatically
# watched since it was an initialized handlde and not a process.
$modem->log_stdout(1);

# Send it an ATZH0\r to reset its state.
$modem->send_slow(.5,"ATZH0\r");

# How about we look for an OK?
$modem->expect(30,'-re','^OK\r?$')|| warn "Never got OK from modem\n";

# Now let's interact with it so the user can talk to it, dial it out,
# whatever. This is basically a poor man's term program.
# When you interact() with a handle it puts STDIN in raw mode so
# you are assured of interacting cleanly, no escape chars, etc.
# This is usually what you want. Here however it's nice to be able to
# escape from the session without doing any extra work. So let's make
# an escape character of ^W.
$modem->interact(\*STDIN,"\027");

# Done? Reset the modem, close the handle.
print $modem "+++";
sleep 3;
print $modem "ATZH0\r";
sleep 1;
# Grab any output ready on the handle, toss it.
$modem->expect(0);
$modem->hard_close();



