|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Débutant
Étudiant Inscription : avril 2007 Messages : 940 ![]() |
Bonjour à tous,
J'ai besoin d'une aide concernant un probleme: En fait j'ai un fichier 1 qui contient des ligne et des valeur sous cette forme : bonjour 1 les 3 Amis 5 un Deuxieme fichier : bonjour 1 les 2 Amis 4 je cherche une idee comment qui lit ces 2 fichier et qui produit un fichier somme de valeur sous cette forme bonjour 2 les 5 Amis 9 Merci pour votr aide
__________________
Le jour est le père du labeur et la nuit est la mère des pensées. |
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Laurent R.Conseil - Consultant en systèmes d'information Inscription : mai 2012 Messages : 567 ![]() |
Bonjour,
si je suppose que la règle est que les chiffres à additionner sont toujours la dernière information sur la ligne du fichier, je peux faire un truc dans ce genre: Code :
Le résultat est ici imprimé à l'écran (et peut être redirigé vers un fichier le cas échéant), mais il n'est pas difficile d'ouvrir un troisième fichier pour écrire dans celui-ci.
__________________
Sauf mention contraire explicite, les bouts de code que je poste en réponse à une question n'ont pas forcément été testés. |
||
|
|
10
|
|
|
#3 |
|
Débutant
Étudiant Inscription : avril 2007 Messages : 940 ![]() |
Merci Lolo87 pour votre aide precieuse,
J'ai essayé de compiler ce script, mais il maffiche ce message : Execution of ./perl.pl aborted due to compilation errors. je pense une erreur au niveau de la ligne 7 Avez vous une idée svp? Merci
__________________
Le jour est le père du labeur et la nuit est la mère des pensées. |
|
|
00
|
|
|
#4 | |
|
Membre Expert
![]() Laurent R.Conseil - Consultant en systèmes d'information Inscription : mai 2012 Messages : 567 ![]() |
Citation:
As-tu changé quelque chose? Il y avait cependant deux petites erreurs: Code :
my ($fichier1, $fichier2) = qw / fichier1.txt fichier 2.txt/; Code :
my ($fichier1, $fichier2) = qw / fichier1.txt fichier2.txt/; Et là, ça imprime:
__________________
Sauf mention contraire explicite, les bouts de code que je poste en réponse à une question n'ont pas forcément été testés. |
|
|
|
10
|
|
|
#5 | |
|
Débutant
Étudiant Inscription : avril 2007 Messages : 940 ![]() |
Citation:
__________________
Le jour est le père du labeur et la nuit est la mère des pensées. |
|
|
|
00
|
|
|
#6 |
|
Débutant
Étudiant Inscription : avril 2007 Messages : 940 ![]() |
Bonjour,
Je suis encore dans le meme contexte J'ai un souci avec les valeur à virgule, jai un message d'erreur : Use of uninitialized value $texte in concatenation (.) or string at ./perl.pl line 18, <$FIC2> line 1. 0 Use of uninitialized value $texte in concatenation (.) or string at ./perl.pl line 19, <$FIC2> line 1. Merci d'avance
__________________
Le jour est le père du labeur et la nuit est la mère des pensées. |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Laurent R.Conseil - Consultant en systèmes d'information Inscription : mai 2012 Messages : 567 ![]() |
Bonjour,
modifie la ligne 7 comme suit: Code :
my ($texte, $value1) = ($1, $2) if $line1 =~ /^([\w\s]+)([,\d]+)$/; Code :
my $value2 = $1 if $line2 =~ /([,\d]+)$/;
__________________
Sauf mention contraire explicite, les bouts de code que je poste en réponse à une question n'ont pas forcément été testés. |
|
|
10
|
|
|
#8 | ||
|
Débutant
Étudiant Inscription : avril 2007 Messages : 940 ![]() |
Merci Lolo,
Avec ce code Code :
a a 4 fichier2: a a 1.1 fichier resultat : a a 1 4.1 ce qui est faux
__________________
Le jour est le père du labeur et la nuit est la mère des pensées. |
||
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Laurent R.Conseil - Consultant en systèmes d'information Inscription : mai 2012 Messages : 567 ![]() |
Hum, je viens d'essayer.
En imprimant les différentes variables, j'obtiens bien: - $value1 = 4 - $value2 = 1.1 - $tot_val = 5.1 et 'print "$texte $tot_val\n";' m'affiche "a a 5.1". Fais comme moi, affiche chacune des valeurs intermédiaires pour débuguer et essayer de trouver où se trouve l'erreur dans ton programme.
__________________
Sauf mention contraire explicite, les bouts de code que je poste en réponse à une question n'ont pas forcément été testés. |
|
|
00
|
|
|
#10 |
|
Débutant
Étudiant Inscription : avril 2007 Messages : 940 ![]() |
Merci Lolo, j'ai essayé de faire des verification avec les affichage:
quand j'inverse le contenu des 2 fichier de cette sorte : fichier1 : a a 1.1 fichier2: a a 4 ca m'affiche ca : a a 4 1.1 avec value1 = .1 et value2 = 4
__________________
Le jour est le père du labeur et la nuit est la mère des pensées. |
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() Laurent R.Conseil - Consultant en systèmes d'information Inscription : mai 2012 Messages : 567 ![]() |
Oui, si tu intervertis les deux fichiers, il y a un petit problème.
Et le problème est qu'il faut définir très précisément le motif que tu risques de rencontrer (combien de lettres, combien de chiffres, etc. Si tu changes la ligne 13 du code que tu as posté en dernier avec ceci: Code :
my ($texte, $value1) = ($1, $2) if $line1 =~ /^([a-zA-Z\s]+)([.\d]+)$/; Mais ça veut dire que si ton fichier contient "a2 a 1.1" au lieu de "a a 1.1", ça ne marchera plus (le 2 ne sera plus reconnu). Donc, encore une fois, la question est de définir très précisément les données en entrée.
__________________
Sauf mention contraire explicite, les bouts de code que je poste en réponse à une question n'ont pas forcément été testés. |
|
|
10
|
|
|
#12 |
|
Débutant
Étudiant Inscription : avril 2007 Messages : 940 ![]() |
Merci Lolo87
__________________
Le jour est le père du labeur et la nuit est la mère des pensées. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com