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 に答える