Expect::Simple was designed to work with programs that return a prompt after performing every action, so it really wants to see a prompt after you send a command to the program.
in reply to How to handle Expect::Simple sessions to programs that end normally.
I can imagine adding EOF as an acceptable "prompt", but there'd have to be a way of specifying it on the fly, as EOF is typically only acceptable at the end of your communications (else you'd never catch aborted programs).
If you come up with a reasonable approach I'll add it to the module. As it stands, I think you've hit upon the only reasonable workaround.