perl中@arr内未初始化值的使用
我有一个 Perl 脚本,它读取一个包含我的 SQL 文件的目录。
然后迭代这个数组并删除其中一个并将它们打印出来。
@sqlArray = glob('C:/Users/Geeks/Folder/*.sql');
print Dumper(@sqlArray );
if( $company ne 'Geeks'){
my $index = 0;
my $count = scalar @sqlArray ;
$index++ until $sqlArray [$index] eq 'factura.sql' or $index==$count;
splice(@sqlArray , $index, 1);
}
print Dumper(@sqlArray );
我收到以下错误,我不知道它是怎么来的以及如何修复它?
Use of uninitialized value within @sqlArray in string eq at /.../software/Queries.pl line 97.
欢迎任何想法,并提前致谢。
回答
问题是您访问了数组末尾之外的一个元素。该数组的scalar(@sqlArray)元素编号从0to @sqlArray-1(又名$#sqlArray),但您可以进一步访问。
当您想从数组中删除元素时,请考虑grep.
@sqlArray = grep { $_ ne 'factura.sql' } @sqlArray
if $company ne 'Geeks';