Term::UI provides methods to ask both elaborate questions as well as simple yes/no questions via a Term::ReadLine interface using a template. It can also parse options per unix style.