On Fri, Feb 6, 2009 at 14:31, Ice Man <wjharris...@optonline.net> wrote: > Ok ..... so I have to start a program which is written in java. > > #!/local/bin/perl > > my $command = "/aa/bb/c/executable \&"; > my $ret = 0; > > $ret = `$command`; > > exit $ret; > > The normal behavior of this executable is to list some information but > it never returns you to a prompt. You have to hit the return key to > get the shell prompt back. > > The same thing is happening to this program. Is there a way in perl > to pass a return "\n" on the command to be executed that would return > a prompt to the program so it does not hang? I have tried the > following: > snip
It sounds like you need IPC::Open2* or IPC::Open3**. They allow you to run an external command and control its STDIN, STDOUT, and, in the case of IPC::Open3, STDERR. Try something like this: #!/usr/bin/perl use strict; use warnings; use IPC::Open2; #if this is the child my $arg = shift; if (defined $arg and $arg eq 'you are the child') { print "I am the child\nwaiting for user to hit enter...\n"; <STDIN>; exit; } #if this is the parent print "I am the parent, getting ready to run the child\n"; #call myself with the argument "you are the child" open2 my $child_stdout, my $child_stdin, $0, "you are the child"; print "child ran, sending return to it now\n"; #send a return to the child to get it to quit print $child_stdin "\n"; #read what it wrote to the stdout print "child said:\n", map { "\t$_" } <$child_stdout>; -- Chas. Owens wonkden.net The most important skill a programmer can have is the ability to read. -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/