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


以上是perl中@arr内未初始化值的使用的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>