: : $csv = Text::CSV->new(); $TodoCnt = -1; PROC_TODO: while(my $TODOrec = ) { # . . . . . . . . . . . . . . . . . . . . . . . . $TodoCnt++; if ($TodoCnt == 0) {next PROC_TODO;} if ($TODOrec =~ /^FNX,/i) {last PROC_TODO;} $csv->parse($TODOrec); @Fields = $csv->fields(); DELETE_EACH_FILE: foreach my $FileNameToDelete (@InDirFiles) { # . . . . . . . . . . . . . . . . $NewMemberName = $Fields[FLD_LECROY] . "/" . $FileNameToDelete; print "DBG: Name- \"$NewMemberName\"\n"; if (defined($zipB->memberNamed($NewMemberName))) { print "DBG: Member exists (ZipB) (\"$NewMemberName\")\n"; } else { die "**Fatal error, can't find in zip (ZipB; \"".$NewMemberName."\")"; } if (defined($zipA->memberNamed($NewMemberName))) { print "DBG: Member exists (ZipA) (\"$NewMemberName\")\n"; } else { die "**Fatal error, can't find in zip (ZipA; \"".$NewMemberName."\")"; } printf(LOGALL "%.4d Folder: \"%s\"\n", $TodoCnt, $Fields[FLD_LECROY]); printf(LOGALL "%.4s \"%s\"\n", " ", $Fields[FLD_BY_TDS]); printf(LOGALL "%.4s \"%s\"\n", " ", $FileNameToDelete); if ($Fields[FLD_MOVE] =~ /^\s*$/) { print LOGALL " skip folder from ZIP_A_New\n"; print LOGALL " delete folder from ZIP_B_Append\n"; $DelBcnt++; if (!defined($zipB->removeMember($NewMemberName))) { die "**Fatal error, can't remove (ZipB; \"".$NewMemberName."\")"; } } elsif ($Fields[FLD_MOVE] =~ /^move to B$/i) { print LOGALL " delete folder from ZIP_A_New\n"; print LOGALL " SKIP folder from ZIP_B_Append\n"; $DelAcnt++; if (!defined($zipA->removeMember($NewMemberName))) { die "**Fatal error, can't remove (ZipA; \"".$NewMemberName."\")"; } } else { die "**Fatal error, Unknown \"move\" (\"".$Fields[FLD_MOVE]."\")"; } } # . . . . . . . . . . . . . . . . . . . . . . . . . . end DELETE_EACH_FILE } # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . end PROC_TODO if ($Stat = $zipA->overwrite() != AZ_OK) { printf("\n**Error, bad Zip A overwrite() (code: %d)\n\n", $Stat); } if ($Stat = $zipB->overwrite() != AZ_OK) { printf("\n**Error, bad Zip B overwrite() (code: %d)\n\n", $Stat); } : :