试图修改不可创建的数组值,下标-4

Modification of non-creatable array value attempted, subscript -4

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

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

是否与 perl 有关,您不能增加左侧的索引。(-4,-5) 等。 有什么想法吗appreciated.Thanks

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

你可以简单地看到这个:

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