#!/usr/bin/perl -w use IPC::Run qw(start pump finish timeout); my $tok_program = "/bin/./cat"; my ($TOK_IN, $TOK_OUT, $TOK_ERR); my $TOK = start [$tok_program], '<', \$TOK_IN, '1>pty>',\$TOK_OUT, '2>', \$TOK_ERR , debug => 0 or die "Error: $?;\n"; while (my $line = ) { # Send input. $TOK_IN = $line; pump $TOK while length $TOK_IN; # Wait for output. pump $TOK while $TOK_OUT !~ /\n\z/; my $msg = $TOK_OUT; chomp($msg); print "out:$TOK_OUT;;MESSAGE=$msg;;END\n"; $TOK_OUT = ''; } finish($TOK) or die "returned: $?";