in reply to Re: How to handle Expect::Simple sessions to programs that end normally.
in thread How to handle Expect::Simple sessions to programs that end normally.
The fugly hack I outlined in the orig. post has been implemented and it's working fine.
If I were working on Expect::Simple myself (which I don't have time to do!), I might just wrap that particular hack/solution up in a new method named final_send() or send_and_end() or some such. It would have the same behavior as send(), but instead of looking for a prompt it actually would expect to get a type 3 error with zero exit status, and would throw exceptions if it doesn't find that state. So you would not get that "couldn't find a prompt" error, but instead something like "controlled program didn't end as expected.". You could include information in the error text as to whether it found one of the expected prompts instead or another kind of error was raised by Expect. The advantage of this approach is that the controller also controls when the script is expected to end; if the controlled program ends 'normally' at a point you didn't expect, that still causes an exception to be raised.
You might also want to modify the DESTROY block so that it doesn't try to end the program if it's already terminated itself.
NB: Edited for clarity.
--DrWhy
"If God had meant for us to think for ourselves he would have given us brains. Oh, wait..."
|
|---|