我想,您所描述的是:当您单击提交按钮时,您的 cgi 脚本将运行,给定您在表单中输入的参数。然后我要做的是:写回一些东西并再次打印表格 - 使用不同的值。
因此,即使这不是做这类事情的完美方式(对于简单的表单元素替换,您应该在客户端进行并使用 javascript - 您不需要 cgi 后端脚本),让我们看看 cgi 脚本如何可能看起来像。
首先,重要的是要知道如何编写表单。让我们假设您用 print 以“艰难的方式”编写它。您的脚本要做的是解析输入,然后将其作为值添加到输出中。
use CGI;
my $q = CGI->new;
# get the value from the popup / html select
my $popup_value = $q->param('popup_menu'); # name of the <select name="..."> in your html
# ...
# writing the form
print $q->header;
# some more prints with form etc.
print textarea( -name => 'text_area',
-default => $popup_value // '', # will use empty string on first call
);
# Don't turn off autoescaping !
顺便说一句,选择选项的值是一个简短的指示符,而不是全文(即使这可能达到一定数量的字符)。因此,您可能会考虑使用要在文本区域中打印的适当值构建散列或数组,并为您的选择选项提供值 0、1、2 ...
my @text_values = ('', 'First text', 'second text', 'third text');
my $popup_value = $q->param('popup_menu') || 0; # default index.
# now use 1,2,3, ... as values in your popup_menu options
# ...
print textarea( -name => 'text_area',
-default => $text_values[$popup_value] );