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

Perl 试图修改不可创建的数组值,下标-4,perl,indexing,Perl,Indexing,我是perl的新手。我的脚本在一起运行了几个月,现在它导致了一个问题,它不会发送电子邮件。该脚本实际上发送了2个不同的图形(直线和条形),显示每周的总案例数及其平均值。 这是抛出错误的行 $graph->set_图例(@week_start_dates[-4..-1]); 试图修改不可创建的数组值时出现错误消息,下标-4 这与不能增加左边的索引的perl有关吗?(-4,-5)等等。 非常感谢您的任何想法。谢谢是的,因为子程序参数是实际值的别名,值必须存在,如果不存在正索引,它将创建正索引,但它不

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

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

这与不能增加左边的索引的perl有关吗?(-4,-5)等等。
非常感谢您的任何想法。谢谢

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

您可以通过以下方式看到这一点:

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 > 4 ? @week_start_dates[-4..-1] : @week_start_dates