Téléchargement
illégal
Posez votre question Signaler

[perl] ouverture de fichier d'extension parti

fifto 54Messages postés 24 mars 2006Date d'inscription - Dernière réponse le 13 avril 2006 à 00:39
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.
Lire la suite 

[perl] ouverture de fichier d'extension parti »

1 réponses
Réponse
+0
moins plus
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";
    }
  }
}

Ajouter un commentaire
Ce document intitulé « [perl] ouverture de fichier d'extension parti » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?