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