in reply to Deleting lines from an array
in thread Code explanation needed (was: What does this mean)

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 [$_] }