coincidencia exacta de cadena perl

Tengo el siguiente código de Perl para pedirle al usuario que responda sí / no. Si el usuario ingresa algo que no sea sí / no, siga preguntando. Ninguna otra palabra es aceptable. No sé por qué este código no funciona. Probé con la respuesta "noooooo" y esperaba que volviera a aparecer, pero no entra en el bucle while.

¿Alguien puede ayudar a encontrar mi error aquí?

@files = A, B, C;

foreach $c (@files) {
  if (-e $c  ) { 
     print " $c already exists. Do you want to overwrite?  (yes or no): ";
     chomp ($file_yes_no = <STDIN>);

     while ($file_yes_no !~ m/yes{1}|no{1}/i )  {
         print "$c already exists. Do you want to overwrite?  (yes or no): ";
         chomp ($file_yes_no = <STDIN>);
     }

     if ($file_yes_no =~ m/yes/i ) {
         if (system ("cp -f /home/old_path/ /home/new_path/ == 0) {
             print "$c successfully copied;
         } else {
             die "Error: Copy failed, Check the message above";
         }
     }
 else { print "No files copied\n; }

Respuestas a la pregunta(3)

Su respuesta a la pregunta