前提・実現したいこと

(1)web画面にアクセスするたびに表示されるテキストが変わるようなperl/cgiを組みました。

(2)そこに、選択した文字列をサーバー上のファイルに出力できる機能を追加したいです。

表示されるテキストのうち、選択文字列のみをサーバー上のファイルに出力し、
その上でaction属性で改めて同じcgiを読み込むことで、また違うテキストがweb画面上に表示され、
そこで表示されたテキストのうち選択文字列のみをサーバー上のファイルに出力・・・
を繰り返したいです。


発生している問題

https://javascript.programmer-reference.com/javascript-document-getselection/
こちらに記載があるような、選択文字列をjavascriptの変数に格納するやり方はわかったのですが、
script内の変数をperl上に引き継ぐというか、その方法がわかりません。
これができれば(1)と組み合わせるだけだと思うのですが。

全くの素人で申し訳ありませんが、よろしくお願いいたします。


該当のソースコード

#!/usr/local/bin/perl

use strict;
use CGI;
use List::Util;
my $q = new CGI;
###https://javascript.programmer-reference.com/javascript-document-getselection/

print "Content-Type: text/html;charset=utf8\n\n";

print "<!DOCTYPE html>
<html lang=\"ja\">
<head>
<meta charset=\"utf-8\">

</head>
<body>
<script>history\.forward\(\);</script>
<script>
function test\(\){
  var tx = document\.getSelection\(\);
  document\.getElementById\(\"area1\"\)\.innerText = tx;
}
</script>
";

my $file_out = "./out.txt";
open(W, ">> $file_out");
my $text = $q->param('hoge');
print W "$text\n";
close W;

print "
<p>文字列を選択した後にボタンを押すと、選択した文字列が下に表示されます。</p>
<input type=\"text\" id=\"txt1\" style=\"width:400px;margin:5px;\" value=\"つらい!\">
<input type=\"submit\" value=\" ボタン \" onclick=\"test();\" name = \"hoge\" style=\"width:100px;margin:5px;\" action=\"crowd_3_test.cgi\">
<div id=\"area1\" class=\"result\"></div>
</form>
";

補足情報 (OS, ツールのバージョンなど)

  • Red Hat Enterprise Linux Server release 7.3(x86_64)
  • Apache 2.4系
  • GCC 4.8系 /usr/bin/gcc
  • ruby 2系 /usr/bin/ruby
  • Python 2.7系 /usr/bin/python
  • PHP 5.6系 /usr/local/bin/php
  • Perl 5.24 /usr/local/bin/perl
  • Java J2SE8 /usr/bin/java