[perl] ouverture de fichier d'extension parti
fifto
Messages postés
54
Statut
Membre
-
lami20j Messages postés 21506 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21506 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
Bonjour,
J'aimerais savoir comment on programme en perl l'ouverture d'un fichier d'extension particulière dans un repertoire donné.
PAr exemple, je veux ouvrir le seul fichier d'extension *.f06 dans le repertoire /dossier1/
Et si jamais il ne trouve pas de fichier d'extension *.f06 alors il ouvre le fichier d'extension *.nas
PAr contre, si il trouve deux fichiers d'extension *.f06 dans le repertoire, il s'arrete et affiche un message d'erreur.
PAreil si il trouve deux fichiers d'extension *.nas
QQn sait-il faire ca svp ?
merci.
J'aimerais savoir comment on programme en perl l'ouverture d'un fichier d'extension particulière dans un repertoire donné.
PAr exemple, je veux ouvrir le seul fichier d'extension *.f06 dans le repertoire /dossier1/
Et si jamais il ne trouve pas de fichier d'extension *.f06 alors il ouvre le fichier d'extension *.nas
PAr contre, si il trouve deux fichiers d'extension *.f06 dans le repertoire, il s'arrete et affiche un message d'erreur.
PAreil si il trouve deux fichiers d'extension *.nas
QQn sait-il faire ca svp ?
merci.
1 réponse
-
Salut,
#! /usr/bin/perl use warnings; use strict; my %h; my $fic; opendir DIR,"." or die "E/S : $!\n"; while ( defined (my $fic = readdir(DIR)) ){ next if $fic =~ /^\.+/; $h{substr($fic,-3)}++; if ( $fic =~ /.*\.(f06)/ || $fic =~ /.*\.(nas)/){ if ($h{$1} >1){ die "Plusiers fichier $1\n"; } else { open F,"$fic" or die "E/S : $!\n"; } } } while (<F>){print} # pour testJe n'ai pas pris en compte le répertoire vide.
lami20j
P.S. S'il y a un fichier .f06 et un fichier .nas c'est .f06 qui sera ouvert.
Une petite modification (teste les 2)#! /usr/bin/perl use warnings; use strict; my %h; my $fic; opendir DIR,"." or die "E/S : $!\n"; while ( defined (my $fic = readdir(DIR)) ){ next if $fic =~ /^\.+/; $h{substr($fic,-3)}++; if ( $fic =~ /.*\.(f06|nas)/){ if ($h{$1} >1){ die "Plusiers fichier $1\n"; } else { open F,"$fic" or die "E/S : $!\n"; } } }