Problème commande do dans boucle foreach
bonjour,
Je suis tout nouveau dans le monde de la programmation. Je dois réaliser un programme qui va llire un repertoire contenant des fichiers, créer un dossier à partir du nom de chaque fichiers contenus dans le répertoire, puis déplacer le fichier dans le dossier correspondant avant d'effectuer sur ce fichier un script perl (en l'occurence make_raw_envi.pl nom du fichier)
Le problème est qu'il n'effectue qu'une seule boucle et il ne la termine même pas. Il exécute bien le fichier perl (make_raw_envi.pl) mais après il s'arrête.
Quelqu'un aurait-il une solution ?????
voici le code :
opendir ( REP , $ARGV[0] ) || die "Erreur d'ouverture du repertoire $ARGV[0]";
$dir = $ARGV[0];
#Lecture du répertoire et affectation du répertoire sous REP.
#Affichage à l'écran du contenu du répertoire sous la forme d'une liste.
@file = readdir ( REP );
print "\nContenu du repertoire : \n";
foreach $f (@file) {
print "\n$f\n";
}
#Recherche du chemin complet du répertoire de travail et affectation à la variable $hdir.
#Après lecture du répertoire, il faut entrer de celui-ci pour effectuer la création de dossiers.
#use Cwd;
#$hdir = getcwd();
#$ch = "$hdir/$dir";
chdir $dir || die "Erreur dans le changement de repertoire de travail";
#Pour tout les fichiers contenus dans le répertoire, il y a création de la chaîne de
#caractère $h (YYMMDD) qui correspond au nom du futur dossier. Après avoir créer le dossier,
#il faut déplacer le fichier correspondant en renommant le chemin d'accès.
foreach my $f (@file) {
if ( -f $f ) {
$h = substr($f,16,6);
mkdir ($h) || die "\nCreation du dossier $f impossible";
rename ("$dir/$f","$dir/$h/$f") || die "\nImpossible de deplacer le fichier $h";
chdir "$h" || die "Erreur dans le changement de repertoire";
do `make_raw_envi.pl $f`;
}
}
Merci d'avance....