Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 在处的联接或字符串中使用未初始化的值_Perl - Fatal编程技术网

Perl 在处的联接或字符串中使用未初始化的值

Perl 在处的联接或字符串中使用未初始化的值,perl,Perl,我得到以下错误: 在print“@new[$diff..$newlen]”处的联接或字符串中使用未初始化的值 是什么导致了这个问题 错误是什么意思?您已将$newlen设置为数组@new中的元素数,然后尝试访问$new[$newlen]。@new的元素位于0到$newlen-1的索引处,因此$new[$newlen]超出了数组的末尾。您会收到警告,因为它的计算结果为undef,并且未初始化 切片的开始索引也有同样的问题,应该是 use strict; use warnings; my $dir

我得到以下错误:

print“@new[$diff..$newlen]”处的联接或字符串中使用未初始化的值

是什么导致了这个问题


错误是什么意思?

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

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

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;
        }
}

@ysth愚蠢的反应首先要检查的是$diff和$newlen的值与
@new
@ikegami的大小相比,如何做到这一点?请添加一个代码…@ikegami如果我输入值,它工作正常,如果我传递了变量,它会抛出相同的错误…显示的代码甚至不会编译。尝试删除注释掉的行,并将其缩减为生成您所询问的错误的代码。
print "@new[$oldlen..$newlen-1]"