不久,我遇到了一些問題,從Gnuplot本身的Perl腳本中獲取Gnuplot命令的一堵牆。我的主要參考文獻是perlmonks。然後子功能看起來像:從Perl到Gnuplot的管道heredoc
sub binPics {
my $inFileName = shift;
my $outFileName = shift;
my $outputFormatPics = shift;
open(GP, "| gnuplot") or die "Error while piping to Gnuplot: $! \n";
print GP << " GNU_EOF"
plot "$inFileName" u 2 lw 2.5 lc 1 , "" u 3 lw 2.5 lc 2
set terminal $outputFormatPics
set output '$outFileName.$outputFormatPics'
replot
GNU_EOF
}
在此之後,第二個子功能定義爲一個類似的語法,但不同的Gnuplot命令。我按照我定義的順序調用這些子功能。稍後在腳本中生成的圖片被進一步使用。這會產生錯誤。
那麼這裏有什麼問題,以及可能的運行腳本如何看起來像?
我會給我這個問題的固定腳本,但不能解釋整個heredoc語法。隨時可以這樣做或提出其他建議。
/編輯
縮進不再以SO風格顯示。 heredoc中的行具有製表符作爲第一個命令(來構造代碼)。
還記得裸字的文件句柄實際上是全局變量的一種形式。如果你已經定義了一個詞法文件句柄,像:'open(my $ gp,「| gnuplot」)',它會在塊結束時超出範圍時自動關閉。 – tjd
啊,這是有道理的,thx!順便說一句。似乎缺少的「close」並不總是這個劇本的問題。 – EverythingRightPlace