[perl] ouverture de fichier d'extension parti

fifto Messages postés 54 Date d'inscription vendredi 24 mars 2006 Statut Membre Dernière intervention 15 juin 2006 - 12 avril 2006 à 14:51
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 -
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.
A voir également:

1 réponse

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 570
13 avril 2006 à 00:39
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 test
Je 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";
    }
  }
}

0