Du kommst komplett ohne solche furchtbaren Hacks wie Frames und benannten Dateien aus. Benutze einfach ein einzelnes Dokument mit selbstadressiertem Formular und Bildausgabe.
use IPC::Run qw(run);
use Plack::Request qw();
use URI qw();
use autodie qw(:all run);
my $plotheader = <<'PLOTHEADER';
set term png size 600, 400
plot '-'
PLOTHEADER
my $template = <<'HTML';
<!DOCTYPE html>
<html><head><title>Gnuplot-Demo</title>
<style>textarea { display: block; width: 5em; height: 10em; }</style>
</head><body>
<form action="%s">
<textarea name="plot">
1 1
2 4
3 9
4 16
5 25
</textarea>
<input type="submit">
</form>
%s
</body></html>
HTML
my $app = sub {
my ($env) = @_;
my $req = Plack::Request->new($env);
my $in = $req->param('plot');
my $img = q();
if ($in) {
$in = $plotheader . $in;
my $out;
run ['gnuplot'], \$in, \$out;
my $u = URI->new('data:');
$u->media_type('image/png');
$u->data($out);
$img = qq(<img src="$u" alt="">);
};
my $res = $req->new_response(
200,
[Content_Type => 'text/html'],
[sprintf $template, $req->uri, $img]
);
$res->finalize;
};