我创建了一个脚本,其中我将现有记录存储在一个数组中,然后将记录与最新文件记录进行比较,如果存在则从数组中删除记录。 现在我可以比较和打印我的记录但是当我试图调试/打印剩余的列表时。一旦所有循环都关闭,它就像需要全局语法一样抛出错误。这意味着脚本无法读取阵列外部数组中存在的剩余列表。
例如: 我有100条记录,我把它放在一个数组中。现在,当新的记录进程时,它将查看数组中的值是否匹配,它将从数组中删除记录。因此,最后记录匹配的内容将被删除,remaining_record数组将保留在新记录文件中不存在的那些记录中。
if ( grep { $new_record eq $Current_record } @array ) {
DEBUG( "DEBUG: record found in existing array" );
my @remaining_record = splice(@array, $new_record, 1);
}
现在,当我尝试在脚本结束时调试剩余记录时,脚本正在寻找全局变量并且看起来是空的。
my @remaining_record;
my $size = @remaining_record;
for ($n=0; $n < $size; $n++) {
DEBUG( "DEBUG: Remaining records $remaining_record[$n][0]" );
}
答案 0 :(得分:1)
my @remaining_record;
my $size = @remaining_record;
从my
移除@remaining_record;
,否则会创建名为@remaining_record
的新空数组。
或者将旧数组的剩余数据分配给remaining_record
,如
my @remaining_record = @array_with_remaining_data;
修改您的程序,如下所示。
my @remaining_record;
if ( grep { $new_record eq $Current_record } @array ) {
DEBUG( "DEBUG: record found in existing array" );
@remaining_record = splice(@array, $new_record, 1);
}
my $size = @remaining_record;
for (my $n=0; $n < $size; $n++) {
print "DEBUG: Remaining records $remaining_record[$n]";
}