use strict;
use warnings;
my $dir = "/";
my @old = `ls -1rtA $dir`;
#print @old;
my #variable declaration
while(1){
$oldlen = scalar @old;
@new = `ls -1rtA $dir`;
print @new;
$newlen = scalar @new;
if(@old ~~ @new)
{
}
else
{
$diff=$oldlen+1;
print "$diff \n";
print "$list \n";
#print "@new[$list] \n";
#$op=$new[$list];
print "$newlen \n";
#pop @core,$op;
print "@new[$diff..$newlen]";
print @core;
}
}
我收到以下错误:
在print "@new[$diff..$newlen]";
导致此问题的原因是什么?
错误是什么意思?
答案 0 :(得分:2)
您已将$newlen
设置为数组@new
中的元素数,然后尝试访问$new[$newlen]
。 @new
的元素位于0
到$newlen - 1
的索引处,因此$new[$newlen]
超出了数组的末尾。您收到警告,因为此评估结果为undef
且未初始化。
切片的起始索引存在同样的问题,应该读取
print "@new[$oldlen..$newlen-1]"