in reply to Making a program for a gui future
I don't know about the gui-future part, but have you considered Term::ReadLine? I'm always a little annoyed when an interactive cmd-line program doesn't pick up my vi keys pref and doesn't do cmd history. Why not hook into libreadline and get all the goodies?