おそらく、あなたが説明しているのは、送信ボタンをクリックすると、フォームに入力したパラメーターを指定して、cgiスクリプトが実行されるということです。それから私がしなければならないことは、何かを書き戻し、フォームをもう一度印刷することです-異なる値で。
したがって、これがそのような種類のことを行う完璧な方法ではない場合でも(単純なフォーム要素の置換には、クライアント側で実行し、javascriptを使用する必要があります-これにはcgiバックエンドスクリプトは必要ありません)、cgiスクリプトを見てみましょうのように見えるかもしれません。
まず、フォームの書き方を知ることが重要です。あなたがそれを印刷で「難しい方法」で書くと仮定しましょう。スクリプトが行う必要があるのは、入力を解析してから、それを値として出力に追加することです。
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] );