CGI Implementation: Inheritance Among CGI Classes @ISA of config.cgi follows: FML::CGI::Menu FML::Process::CGI::Kernel FML::Process::CGI::Param In the case of thread.cgi, @ISA is FML::CGI::Thread FML::Process::CGI::Kernel FML::Process::CGI::Param .cgi specific codes locate at FML::CGI:: class layer. FML::Process::CGI::Kernel provides the main part of CGI process and CGI specific function run_cgi_XXX(). If needed, FML::CGI:: class overloads this layer. Currently, the following methods in FML::Process::CGI::Kernel are not used. run_cgi_log run_cgi_dummy run_cgi_date CGI Implementation: config.cgi @ISA of config.cgi is as follows: FML::CGI::Menu FML::Process::CGI::Kernel FML::Process::CGI::Param Let see processing of config.cgi below. config.cgi process object $curproc is a FML::Process::CGI::Kernel class. new() prepare() verify_request() run() finish() is sequentially called from FML::Process::CGI::Kernel class. run() is important. run() executes the following methods sequentially. $curproc->html_start(); (FML::CGI::Menu) $curproc->_drive_cgi_by_table(); (FML::Process::CGI::Kernel) $curproc->html_end(); (FML::CGI::Menu) _drive_cgi_by_table() prepares the screen. This function calls the main part of CGI. $curproc->_drive_cgi_by_table() calles the following run_XXX() methods. run_cgi_main (FML::CGI::Menu) calls cgi_execute_command (FML::Process::CGI::Kernel) to execute FML::Command::Admin::$COMMAND via FML::Command class. This is the main part of command execution via CGI but the screen creation is a role of another part. For example, consider subscribe an address via CGI. run_cgi_main() executes the real process of subscription. Instead run_cgi_menu() creates input menu. Former calls FML::Command::Admin::subscribe::process() method, latter calls FML::Command::Admin::subscribe::cgi_menu() method. There are several other run_cgi_XXX() methods. They are optional for screen creation. The following run_cgi_XXX() uses the default method. run_cgi_title FML::Process::CGI::Kernel (show title) run_cgi_options FML::Process::CGI::Kernel (show language selection) .cgi specific methods are as follows: run_cgi_navigator FML::CGI::Menu run_cgi_help FML::CGI::Menu run_cgi_command_help FML::CGI::Menu run_cgi_menu FML::CGI::Menu run_cgi_menu() executes FML::Command::Admin::COMMAND::cgi_menu() via cgi_execute_cgi_menu() method.