l'operatore "==" vale per i confronti tra numeri, per i confronti tra stringhe si usa "eq". A parte ciò sarebbe molto meglio al posto di:

$i = 0;
while ($i <= $#thefiles) {
if ($nome_file == @thefiles[$i]){
print "$ok";
last;
}
$i++;
}

scrivere:

foreach my $file (@thefiles) {
if (nome_file eq $file) {
print $ok;
last;
}
}