in reply to Interactive program

Maybe it's late in the day for me, but I'm having a little difficulty parsing your question. Most of what you're talking about is just "programming", so I think you're asking about good ways to prompt for user input.

For taking user input, I kind of like IO::Prompt::Tiny; it's simple to use, and is based on the prompt() function built into ExtUtils::MakeMaker. The one caveat is that it has a dependency on Capture::Tiny, which is also a really convenient module, but has a few FAILS on Win32 (and more PASSes). That may or may not be an issue for you.

use IO::Prompt::Tiny qw( prompt ); # Prompt with a default of vanilla. my $input = prompt( 'Please enter your ice cream preference', 'vanilla +' ); print " like $input ice cream. Freud would love this revelat +ion.\n";