while(1) { if (eof(STDIN)) { print "END"; exit; } $_ = ; if (/^q/i) { print "END"; exit; } print; print '$ '; } #### #!/usr/bin/perl -w # use Test::More tests => 4; use Expect; $script = './test1-script.pl'; @match_pattern = ( [ qr/END/ => sub { print "\n"; ok(1,"got end"); } ] ); #----------------------- 1 --------------------------- $exp = Expect->spawn($script); $exp->send("q\n"); $exp->expect(10, @match_pattern); #----------------------- 2 --------------------------- $exp = Expect->spawn($script); $exp->send("\4\n"); $exp->expect(10, @match_pattern); #===================================================== use IPC::Open3; #----------------------- 3 --------------------------- $pid = open3($in, $out, $err, $script); print $in "q\n"; like(<$out>,qr/END/,"Quit"); waitpid($pid, 0); #----------------------- 4 --------------------------- $pid = open3($in, $out, $err, $script); close $in; like(<$out>,qr/END/,"EOF in Input"); waitpid($pid, 0);