That's because a
delete $array [$indx] only
changes the size of the array if you are deleting from
the end. If you really want it gone, you would use
splice, but splicing away lots of individual
elements from a large array is costly (as each splice in
general take time linear in the size of the array).
You could change your print to:
defined ($_) && print FLE $_, $/ for @file;
unless you have undeleted, undefined elements in
@file
which you want to print. In that case, you could do something
like:
foreach (0 .. $#file) {
print FLE $file [$_], $/ if exists $file [$_]
}
Abigail