perl exact de la chaîne de match

J'ai suivantes code Perl pour demander à l'utilisateur de réponse oui/non. Si l'utilisateur entre autre chose que oui ou non, continuer à poser la question. Aucun autre mot n'est acceptable. Je ne sais pas pourquoi ce code ne fonctionne pas. J'ai testé avec la réponse "nooon" et je m'attendais à ce qu'il invite à nouveau, mais il n'entre pas dans la boucle while.

Quelqu'un peut-il aider à trouver mon erreur ici?

@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; }
  • Utilisation File::Copy pour copier un fichier. use File::Copy qw(copy); copy($src, $dest) or die $!;
  • que diriez -do { print ...; chomp ... } while condition;. mieux encore, p3rl.org/IO::Prompt
  • Êtes-vous à l'aide de use warnings; use strict;?
InformationsquelleAutor NewBie | 2013-02-05