J'ai le code Perl suivant pour inviter l'utilisateur à répondre par oui/non. Si l'utilisateur entre autre chose que oui/non, continuez à le demander. Aucun autre mot n'est acceptable. Je ne sais pas pourquoi ce code ne fonctionne pas. J'ai testé avec la réponse "noooooo" et je m'attendais à ce qu'il invite à nouveau mais il n'entrait pas dans la boucle while.perl correspondance de chaîne exacte
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; }
Utilisez 'File :: Copy' pour copier un fichier. 'utilise File :: Copy qw (copie); copy ($ src, $ dest) ou die $ !; ' – TLP
que diriez-vous de' do {print ...; chomp ...} en condition; mieux encore, http://p3rl.org/IO::Prompt – ysth
Utilisez-vous des avertissements d'utilisation? utiliser strict, '? – chepner