"gnuplot"プロセスを実行してopen2でコマンドを送信しようとしていますが、何も起こりません。私はperlで新しいので、私はちょっとしたことがうまくいくと思いますが、このモジュールに関する公式文書は私には分かりません。Perl、open2、stdinは動作しません
use IPC::Open2;
use strict;
use warnings;
my($w, $r);
my $pid = open2($w, $r, "gnuplot") or die "$!";
# print "pid was $pid\n";
print $w "reset\n";
print $w "dx=5.\n";
print $w "n=2\n";
print $w "total_box_width_relative=0.75\n";
print $w "gap_width_relative=0.1\n";
print $w "d_width=(gap_width_relative+total_box_width_relative)*dx/2.\n";
print $w "reset\n";
print $w "set term png truecolor font 'arial,10' fontscale 1.0 size 800, 400\n";
print $w "set output 'test.png'\n";
print $w "set xlabel 'time' offset '0', '-2'\n";
print $w "set ylabel 'load'\n";
print $w "set autoscale xfixmin\n";
print $w "set autoscale xfixmax\n";
print $w "set autoscale y\n";
print $w "set datafile separator '\\t'\n";
print $w "set xdata time\n";
print $w "set timefmt '%d-%m-%Y'\n";
print $w "set xrange ['08-12-2016':'23-02-2025']\n";
print $w "set format x '%m/%d/%Y'\n";
print $w "set xtic rotate by 30 offset character -4,-2\n";
print $w "set xtics font ', 8'\n";
print $w "set grid\n";
print $w "set boxwidth total_box_width_relative/n relative\n";
print $w "set style fill transparent solid 0.5 noborder\n";
print $w "plot 'test.dat' u 1:2 w boxes lc rgb'blue' notitle,\\\n";
print $w " 'test.dat' u 1:3 w boxes lc rgb'red' notitle\n";
close($w);
waitpid($pid, 0);
if ($?) {
print "That child exited with wait status of $?\n";
}
TEST.DAT構造例:
08-12-2016 3 6
09-12-2016 56 44
私が間違って何をしているのですか?
ああ、おかげで、それは少し近いですが、gnuplotのエラーが応答しているが、それでも、スクリプトが起動し、何もしません。私ができる唯一のことは手動のctrl + c割り込みですが、それでもいくつかのgnuplotデーモンはメモリに残っていて、cmdはダイアログウィンドウで閉じています。 "本当にプロセスを終了しますか?" – genesi5
gnuplotコマンドの最後に 'exit'を追加することはできますか? – Sobrique
gnuplotのように "プロット"行が好きではないようですが、どのような方法でも(スラッシュ、スラッシュ、onelinerなど)、.plファイルでのみ試みました。 gnuplotで同じコードを実行すると、すべて正常です。 – genesi5