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 :

[débutant] Problème d'ouverture


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 22
    Points : 15
    Points
    15
    Par défaut [débutant] Problème d'ouverture
    Bonjour.

    Voici le début d'un script sur lequel je planche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    use POSIX;
    open (input1,'test.smt') || die "Pb d'ouverture du fichier";
    open (input2, 'nbpuits.txt') || die "Pb d'ouverture du fichier";
    open (output1,'>Resultats.csv');
    Le fichier input2 contient des valeurs scalaires ponctuelles du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $nbprod=8
    $nbinj=5
    que j'aimerais pouvoir lire dans ce script perl sans avoir à les écrire à la main.

    Comment faire pour que cela puisse être possible?
    J'ai déjà essayé pour le script que je suis en train d'éditer des commandes du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $prod = sysread (output1, $numprod, 100)
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $prod = read (output1, $numprod, 100)
    mais cela ne fonctionne pas.
    Quelle serait la syntaxe adéquate, SVP?

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Bonjour mon brave .
    Vous devriez essayer cette petite commande toute bête (crétin, va! ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $ligne=<input2>;
    $prod=<input2>;
    chomp $prod;
    dans le cas où la première ligne du fichier output2 est occupée par une ligne de commentaire.
    Et ainsi de suite...

    Bon, plus sérieusement, si quelqu'un pouvait me proposer une syntaxe qui puisse être plus générale, j'accepte.
    Bon week-end.

  3. #3
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    Si ton fichier ne contient qu'un bloc perl du genre
    [code]$nbprod=8;
    $nbinj=5;[code]

    Tu peux faire un include de ce fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include("fichier.txt");
    et les variables seront directement utilisables

    Sinon, il faudra le lire dans une hash:

    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
     
    use POSIX;
    open (my $input1,'<', 'test.smt') || die "Pb d'ouverture du fichier test.smt";
    open (my $input2, '<', 'nbpuits.txt') || die "Pb d'ouverture du fichier nbpuits.txt";
    open (my $output1,'>', 'Resultats.csv') || die "Pb Ouverture fichier Resultats.csv";
     
    my %hash = ();
    while (<$input1>)
    {
        if ( m/^\$([a-zA-Z]+)=(\d+)$/ )
        {
            my ($name, $value) = ($1, $2);
            $hash{$name} = $value;
        }
    }

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Bonjour et merci d'avoir réopndu.
    En fait, j'ai voulu rendre ce problème résolu avant que tu ne répondes mais j'ai d'abord fini de commenter mon script.
    En fait, mon input2 est devenu entre temps une sorte de fichier fourre-tout, ce qui fait que j'ai pu me permettre de faire une simple boucle pour réussir à le lire.

    Encore merci et bon week-end!

  5. #5
    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 MarneusCalgarXP
    Si ton fichier ne contient qu'un bloc perl du genre
    [code]$nbprod=8;
    $nbinj=5;[code]

    Tu peux faire un include de ce fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include("fichier.txt");
    et les variables seront directement utilisables
    include() n'existe pas en Perl, éventuellement il aurait pu utiliser do() même si je ne lui recommande pas...

    Citation Envoyé par MarneusCalgarXP
    Sinon, il faudra le lire dans une hash:

    Pourquoi POSIX ? POSIX est un module lourd, dont il est largement préférable de se passer si c'est possible comme ici (encore que la situation se soit amélioré dans les versions récentes de Perl).

    --
    Jedaï

  6. #6
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    Citation Envoyé par Jedai
    include() n'existe pas en Perl, éventuellement il aurait pu utiliser do() même si je ne lui recommande pas...
    Je voulais dire require, autant pour moi

    Citation Envoyé par Jedai
    Pourquoi POSIX ? POSIX est un module lourd, dont il est largement préférable de se passer si c'est possible comme ici (encore que la situation se soit amélioré dans les versions récentes de Perl).
    Copier coller du script du 1° post, c'est la simple raison..

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutante] Problème ouverture base Access
    Par Marla75 dans le forum Access
    Réponses: 2
    Dernier message: 07/05/2010, 12h23
  2. [débutant] problème de maintien d'ouverture de fenêtre
    Par Antigonos Ier Gonatas dans le forum C++
    Réponses: 6
    Dernier message: 02/04/2006, 12h12
  3. [débutant]problème d'ouverture d'un include
    Par Bifoloss dans le forum MFC
    Réponses: 6
    Dernier message: 18/03/2006, 01h17
  4. [débutant] Problèmes avec CRegKey
    Par Pedro dans le forum MFC
    Réponses: 4
    Dernier message: 10/11/2003, 15h28
  5. Réponses: 11
    Dernier message: 02/09/2003, 14h20

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