尝试修改非可创建的数组值,下标-4

时间:2015-01-14 22:47:07

标签: perl indexing

我是perl的新手。我的脚本一起运行了几个月,现在它导致了一个问题,它不会发送电子邮件。该脚本实际上每周发送2个不同的图表(行和条)及其平均值。 这是抛出错误的一行。

$ graph-> set_legend(@week_start_dates [-4 ..- 1]); 错误消息 - 尝试修改不可创建的数组值,下标-4

是否与perl有关,你不能在左边增加索引。( - 4,-5)等。 任何想法都非常感激。谢谢

1 个答案:

答案 0 :(得分:2)

是的,因为子程序参数是实际值的别名,所以该值必须存在,并且如果它们不存在则会创建正索引,但它不会延长数组以创建负索引,因为这会改变其他存在的索引的含义。

您可以通过以下方式看到:

perl -wle'@x = 1..3; sub{}->(@x[-4..-1])'
Modification of non-creatable array value attempted, subscript -4 at -e line 1.

所以你应该弄清楚为什么少于四个week_start_dates。

或者,如果可以接受少于四个week_start_dates,则可以使用以下内容:

@week_start_dates > 4 ? @week_start_dates[-4..-1] : @week_start_dates