在我的perl代码中,我有几个名为'a','b','c'....'e','f'的数组。我在调用“ MyFunc”时将它们作为参数发送。在这里,我想绘制任意两个数组,例如'e'与'f'。
我以以下方式尝试(请看代码),但是我收到一条消息,指出正在执行 my $gd = $graph->plot(\@e,\@f) or die $graph->error;
命令的行中没有可用的数据点。 / p>
如何使其工作?
MyFunc(
'a' => [0, 1,2,3,4],
'c' => [0, -1,2,-3,6],
'c' => [0, 2,4,2,5],
'd' => [0, 1,2,3,4],
'e' => [0, 9,2,1,7],
'f' => [-2, 5,-1,1,7],
'g' => [5, 1,8,-2,5],
);
sub MyFunc {
use GD::Graph::lines;
my $graph = GD::Graph::lines->new;
$graph->set(
x_label => 'X Label',
y_label => 'Y label',
title => 'Some simple graph',
y_max_value => 8,
y_tick_number => 8,
y_label_skip => 2
) or die $graph->error;
my $gd = $graph->plot(\@e,\@f) or die $graph->error;
open(IMG, '>file.gif') or die $!;
binmode IMG;
print IMG $gd->gif;
close IMG;
};
答案 0 :(得分:2)
将参数'e' => [0,9,2,1,7]
传递给子例程不会自动在子例程内创建名为@e
的变量。您的子例程不会对参数进行任何处理。考虑这样的事情来做您想做的事情:
sub MyFunc {
my %params = @_;
...
my $gd = $graph->plot( [$params{"e"}, $params{"f"}] ) ...
...
}