IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

le handle de fichier est il parametrable?


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 30
    Points : 19
    Points
    19
    Par défaut le handle de fichier est il parametrable?
    Salut

    je voudrais parametrer l´ouverture pour lecture de certains fichiers, et cela de cette maniere:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
     
    open (FIC, "<repertoire/docufinal.html") || die "error: cannot read file";
     
     
    foreach my $value(@file){
    $cpt=$cpt+1;
    open (FILE$cpt, "<repertoire/docu$cptinitial.html") || die "error: cannot read file";
     
    @file$cpt=<FILE$cpt>;
     
    print FIC @file$cpt;
     
    }
     
    close(FIC);
     
    $cpt=0;
    foreach my $value(@file){
    $cpt=$cpt+1;
    close(FILE$cpt);
    }
    le nombre de fichiers (docu1initial.html ,docu2initial.html ...) variant, j peux fixer le nombre ds le programme, foit tout d´ábord savoir combien sont present ds le repertoire courant et les mettre ds un tableau (@file), ensuite parcourir le tableau pr traiter 1 a 1 ($value(@file))

    Mais j´ai ces messages d´erreur a l´execution:

    1-Scalar found where operator expected at ./prog.pl line 1409 near
    @file$cpt

    (Missing operator before $cpt?)

    2-Missing comma after the first argument to open function at ./prog.pl line 1407, near " "<repertoire/docu$cptinitial.html") "

    je ne vois pas les pieges , quelqu´un pourrai aider?
    a bientot

  2. #2
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Bonjour,

    La concaténation en Perl se fait avec l'opérateur point (.). Créé d'abord des variables qui cancatène ce que tu veux (donc le nom de ton handle et celui de ton path) puis utilise ces variable avec open
    "En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
    Application :

    ainsi qu'à regarder la avant de poser une question.

    La rubrique Perl recrute, contactez-moi.

  3. #3
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par Woufeil
    Bonjour,

    La concaténation en Perl se fait avec l'opérateur point (.). Créé d'abord des variables qui cancatène ce que tu veux (donc le nom de ton handle et celui de ton path) puis utilise ces variable avec open
    Tu veux utiliser des références symboliques ? Très mauvaise idée, qui engendre de gros problèmes pour la maintenance par la suite.

    Si tu voulais vraiment ouvrir plusieurs fichiers, je te conseillerais de mettre les handles dans un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #! /usr/bin/perl
    use strict; use warnings;
     
    my @files = ("fichier1", "fichier2");
    my @file_handles;
     
    foreach my $file (@files) {
        open my $fh, '<', $file
            or die "Can't read $file : $!\n";
     
        push @file_handles, $fh;
    }
    Mais à mon avis pour ce que tu veux faire (et ce n'est pas clair du tout...), tu n'as besoin que d'ouvrir un seul fichier à la fois, soit quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    #! /usr/bin/perl
    use strict; use warnings;
     
    my @files = ("fichier1", "fichier2");
    my @file_handles;
     
    foreach my $file (@files) {
        open my $fh, '<', $file
            or die "Can't read $file : $!\n";
     
        # opérations sur $fh
     
        close $fh;
    }
    --
    Jedaï

Discussions similaires

  1. Detecter si un Fichier est deja ouvert
    Par Didier Derain dans le forum C++Builder
    Réponses: 8
    Dernier message: 25/02/2005, 19h27
  2. Unix - Comment savoir si un fichier est ouvert
    Par freddyboy dans le forum C
    Réponses: 7
    Dernier message: 06/10/2004, 15h53
  3. Macro dans excel permettant de voir si un fichier est ouvert
    Par VirginieGE dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/08/2004, 07h51
  4. Comment tester si fichier est ouvert ?
    Par fusef dans le forum Langage
    Réponses: 7
    Dernier message: 11/08/2004, 18h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo