use Expect; use FileHandle; use threads; my $telnet = new Expect; my $telnet_logfile_name = "telnet.log"; my $telnet_logfile = new FileHandle (">$telnet_logfile_name") or die "Can't write $telnet_logfile_name! $!"; $telnet_logfile->autoflush(1); $telnet->log_file (sub { my $str=shift; $telnet_logfile->print ("$str"); }); my @command = qw(telnet www.google.com 80); my $make_it_break = 0; if ($make_it_break) { threads->new (\&daves_handler); $telnet->spawn (@command) or die "Cannot spawn @command: $!\n"; } else { $telnet->spawn (@command) or die "Cannot spawn @command: $!\n"; threads->new (\&daves_handler); } $telnet->send ("GET / HTTP/1.1\r\nUser-Agent: dave\r\nHost: www.google.com\r\n\r\n"); $telnet->expect (10, 'HTTP/1.1 200 OK'); $telnet->print_log_file("Dave was here\n"); sub daves_handler { while (1) { sleep 10; } }