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 :

problème de substitution pour perl


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 7
    Par défaut problème de substitution pour perl
    Bonjour,
    Je voudrais pouvoir remplacer sur une même ligne différentes variables
    exemple:
    etat initial
    15.000000 1000.000000 300.000000
    etat à obtenir
    20.000000 300.000000 500.000000
    La méthode en lisant les octets ne peut être employée car 1000 devient 300 donc un octet de moins.
    Mon problème c'est que quand j'utilise cette fonction 's/15/20/' $filename, il me fait global automatiquement et donc il me remplace bien 15 par 20 ,1000 par 300 mais le 300 suivant n'est pas remplacé et c'est celui que je viens de faire qui passe à 500.
    ça me donne donc 20.000000 500.000000 300.000000
    si je fais 's/15/20' $filename, ça ne fais aucune modif.
    j'ai essayé avec des tell() et seek() mais tell(fichier) contient -1 et si je fais seek(fichier,0,2); il ne me commence pas à la fin du fichier pour me remplacer 300 par 500.
    Je ne vois plus comment faire.
    Merci d'avance pour votre aide.
    Cordialement.
    (Une personne qui débute en perl).

  2. #2
    Expert confirmé
    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
    Par défaut
    Notre FAQ contient une section consacrée à la question.

    Par ailleurs, comme indiqué dans les messages *Importants*, on ne doit pas poster sur ce forum mais uniquement sur les sous-forums, Langage dans ton cas.

    --
    Jedaï

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 7
    Par défaut Problème résolu : voici la solution que j'ai faite
    Bonjour,
    J'ai écrit en fin de compte le script suivant :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    #!/usr/bin/perl -w
    #
    #use strict;
    use CGI::Carp qw(fatalsToBrowser);
    print "Content-type: text/html\n\n";
    print "
    <HTML>
    <HEAD>
       <TITLE>essai de script CGI</TITLE>
    </HEAD>
     
    <BODY>
     Voici le texte de ma page testfichier
    </BODY>
     
    </HTML>
    test_simple<br>";
    open (FH, "/var/www/upload/parametre/dynamicsfile.inp")|| die "Pb d'ouverture FH";
    open (FB, "/var/www/parametre/Calcul_A/pexpert1.txt")|| die "Pb d'ouverture FB";
    open (FS, ">/var/www/upload/parametre/test.txt")|| die "Pb de creation test2";
    my $filename = "/var/www/upload/parametre/test.txt";
    while ($a=<FH>){
    print FS "$a";
    }
    while ($b=<FB>){
    @t=split(";",$b);
    $uu=$t[0];
    $vv=$t[1];
    $ww=$t[2];
    }
    system ("perl -pi -e 's/xx/$uu/g' $filename"); 
    system ("perl -pi -e 's/yy/$vv/g' $filename");
    system ("perl -pi -e 's/zz/$ww/g' $filename"); 
    close (FH, FB, FS);
    FB contient 20;300;500; si on ne met pas le dernier ";" il nous prend en compte l'espace suivant et donc dans le fichier il va à la ligne.
    Dans FH j'ai mis ça :
    1
    xx.000000 yy.000000 55.000000 25.000000 25.000000 zz.000000 255.000000 1.000000 100.000000 45.840000
    0 2 32759 0 100 0.000100


    au lieu de
    1
    15.000000 1000.000000 55.000000 25.000000 25.000000 300.000000 255.000000 1.000000 100.000000 45.840000
    0 2 32759 0 100 0.000100


    Si ça peut aider quelqu'un qui pourrait avoir un problème similaire.
    Cordialement.

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

Discussions similaires

  1. [CR.NET] Problème de connexion pour un sous-état
    Par HULK dans le forum Connectivité
    Réponses: 16
    Dernier message: 02/06/2009, 10h37
  2. [langage] EPIC Plugin eclipse pour perl
    Par JefDeBourges dans le forum Langage
    Réponses: 2
    Dernier message: 21/12/2004, 18h06
  3. Problème unit CRT pour Faire du Pascal avec Delphi
    Par alexmorel dans le forum Débuter
    Réponses: 4
    Dernier message: 01/06/2004, 17h13
  4. Installation du module DBI pour perl sous W2K
    Par tomcat dans le forum Modules
    Réponses: 6
    Dernier message: 22/01/2004, 11h54
  5. Réponses: 5
    Dernier message: 27/08/2003, 11h45

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