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 "So....you like $input ice cream. Freud would love this revelat +ion.\n";