0
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]";

是什么导致了这个问题?

错误是什么意思?

4

1 回答 1

2

您已设置$newlen为数组中的元素数,@new然后尝试访问$new[$newlen]. 的元素@new位于 的索引0$newlen - 1,因此$new[$newlen]超出了数组的末尾。您会收到警告,因为它的计算结果undef为未初始化。

切片的起始索引也有同样的问题,应该是

print "@new[$oldlen..$newlen-1]"
于 2013-03-20T19:29:48.560 回答