Você pode usar Tie::File
:
tie @lines,'Tie::File','C:\...';
for $line (@lines){
# Do some operation on $line
# Test if you need to delete the line
push @to_delete, $i++ if $need_to_delete;
}
delete @lines[@to_delete]
Observe que a variável @lines
se torna mágica: cada elemento da matriz é uma linha do arquivo e todas as alterações feitas nesse elemento são refletidas no arquivo. Nenhuma rede de segurança, portanto, faça um backup primeiro !!