te lo riscrivo completo:

#!/usr/bin/perl
$tot=""; #per generare il nuovo file
open (FL,"file.csv");
while (<FL> ) #leggo riga per riga
{
if ($_ =~ /prova/) #ovvero se la riga contiene la parola prova
{$_ =~ s/prova/nuova parola/g} #ovvero sostituisci la parola prova con la nuova parola
$tot="$tot$_"; #rigenero il file con la riga modificata
}
close (FL);

open (FL,">file.csv"); #se non voglio sovrascrivere il file basta cambiare il nome
print FL $tot;
close (FL);

exit;
Se non funziona può essere perchè:
- il percorso del file non è corretto
- non hai i permessi per sovrascrivere il file

La tua correzione non è molto diversa dal mio codice.
Per verificare la lettura, puoi aggiungere queste righe:
#!/usr/bin/perl
$tot=""; #per generare il nuovo file
open (FL,"file.csv");
while (<FL> ) #leggo riga per riga
{
print "riga letta: $_\n";
if ($_ =~ /prova/) #ovvero se la riga contiene la parola prova
{$_ =~ s/prova/nuova parola/g} #ovvero sostituisci la parola prova con la nuova parola
print "riga modificata: $_\n";
$tot="$tot$_"; #rigenero il file con la riga modificata
}
close (FL);

print "\n\n file corretto:\n$tot";

open (FL,">file.csv"); #se non voglio sovrascrivere il file basta cambiare il nome
print FL $tot;
close (FL);

exit;