私は通常、次のようなコードを使用して、ファイルから gnuplot にデータをパイプし、Perl スクリプト中に画像を作成します。
#!/usr/bin/perl
use warnings;
use strict;
my $in="file.dat";
open(GP, "| gnuplot") or die "$!\n";
print GP << "GNU_EOF";
set terminal png size 1920,1080 font 'Verdana,15' dashed
set output 'out.png'
plot "$in"
GNU_EOF
close(GP);
のような変数を使用できるように、"GNU_EOF"
代わりに定義する必要があります。'GNU_EOF'
$in
今、ファイルから直接読み取られないデータを使用したいと考えています。私のコードは次のようになります:
#!/usr/bin/perl
use warnings;
use strict;
open(GP, "| gnuplot") or die "$!\n";
print GP << 'GNU_EOF';
set terminal png size 1920,1080 font 'Verdana,15' dashed
set output 'out.png'
plot '-'
GNU_EOF
open(INFILE,"< stuff.dat") or die "$!\n";
while (my $line = <INFILE>) {
for my $i (1..10){
# do some stuff to calculate my data points stored in $x and $y
print GP "$x $y\n";
}
print GP "EOF\n";
}
close(INFILE);
close(GP);
"GNU_EOF"
ヒアドキュメントで変数を定義できるようにこれを使用しようとすると、次のようなエラーが発生します。
gnuplot> 187 0.05
^
line 1: invalid command
知らない
""
目的の変数展開を取得するためにヒアドキュメントを使用する必要がある理由と2 番目の例でエラーが発生する理由。
ヘルプは大歓迎です。