【发布时间】:2018-05-08 00:25:06
【问题描述】:
我想要一个 Perl 脚本来显示一个简单的 gnuplot 图。我不想在文件中存储任何数据,我想使用 gnuplot 单行,例如:
gnuplot -p <(echo -e 'plot "-"\n1 1\n2 3\n3 1.7\n4.5 5\ne')
显示点 (1, 1)、(2, 3)、(3, 1.7) 和 (4.5, 5)。
在 Perl 脚本中,我尝试了类似
$plotString = "\"<(echo -e 'plot \\\"-\\\"\\n";
$plotString .= "1 1\\n2 3\\n3 1.7\\n4.5 5\\ne')\"";
system('gnuplot -p ' . $plotString);
但我收到以下错误:
-e plot "-"
^
"<(echo -e 'plot "-"\n1 1\n2 3\n3 1.7\n4.5 5\ne')", line 1: invalid command
这个错误让我吃惊,因为传递给system() 的字符串,正如错误消息中所引用的,显然是正确的。
知道如何修改$plotString 以便system() 正确解释gnuplot 命令吗?
第二个问题:with lines的图形怎么画? (即使在 Perl 之外,我也无法让 gnuplot one-liner 做到这一点。)
编辑:我的操作系统是 Ubuntu 16.04。
【问题讨论】:
-
欢迎来到quoting hell。乍一看,在我看来,您在变量周围有一组额外的引号。但是您已经将事情包裹在如此多的引用中,以至于很难说清楚。我建议尝试一个更简单的字符串,然后慢慢地建立起来。这很可能是一个简单的转义错字。