Problème de de print dans une chaine!! [Perl] - Perl - Programmation
Marsh Posté le 14-05-2005 à 15:17:17
non personne ne px voir ma connerie elle doit etre énorme et je la voie meme pas !!!
Marsh Posté le 14-05-2005 à 17:07:00
La question ne s'adressait pas à moi donc je n'ai pas répondu, mais c'est "my $val = $FCS_file[2];".
Marsh Posté le 15-05-2005 à 12:42:51
Alors donc comme tu me dis j'ai changer ça :
#! /usr/bin/perl
use strict;
my $val;
my $vall;
my @FCS_file;
my @FCS_mesure=(0,0,109,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
my $file = 'FCS_buffer.txt';
open(FIC,$file) or die;
@FCS_file = <FIC>;
close(FIC);
print "FCS_file = @FCS_file\nFCS_mesure= @FCS_mesure\n";
my $val = $FCS_file[2];
print "FCS_file[2] = $val\n";
my $vall = $FCS_mesure[2];
print "FCS_mesure[2] = $vall\n";
Mais le résultat est toujours le meme !!!
FCS_file = 0 0 109 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
FCS_mesure= 0 0 109 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
FCS_file[2] =
FCS_mesure[2] = 109
La franchement je vois pas !!!
Marsh Posté le 15-05-2005 à 13:05:25
Alors la je dream!!
si j'assigne le contenue du fichier a ma variable FCS_file et que je print toute la chaine ok ça print bien mais si je veux print une valeur dans la chaine ça marche pas!!!
mais si j'init ma var FCS_file directement dans le prog alors la ça marche !!!!!!
Marsh Posté le 16-05-2005 à 09:50:29
ca me parait bizare ton truc
deja en faisant @file = <FIC> tu devrait avoir des retour ligne à la fin de chaque element de ton tableau, donc ca devrait se voir dans ton print
Marsh Posté le 16-05-2005 à 09:52:03
tu pourrais changer ton titre ?
Marsh Posté le 16-05-2005 à 09:57:53
un truc qui veuille dire quelque chose
Marsh Posté le 16-05-2005 à 10:00:31
Et la c'est mieux ?
Marsh Posté le 16-05-2005 à 10:03:17
ben voilà \o/
Marsh Posté le 16-05-2005 à 10:08:54
Dans ton fichier, tout est stocké sur une seule ligne.
Par conséquent, $FCS_file[2] n'existe pas.
Tu peux contrôler en imprimant la valeur de scalar(@FCS_file), pour voir.
Il faut utiliser une ligne du type :
Code :
|
Et, par pitié, utilise les balises [cpp][/cpp] pour rendre ton code lisible.
Marsh Posté le 16-05-2005 à 10:11:01
Bon mise a part mon titre tu voie pas une solution!!! J'ai due oublier un truc a la c** encore mais je voie vraiment pas!! quand je print la chaine entière qui vient de mon fichier c'est ok je voie bien toute la chaine mais quand je vx afficher une valeur de la chaine en particulier et bien je n'arrive jamais a l'afficher a l'ecran!!
Mais bon moi a la base je vx juste comparer chaque rang des deux chaines:
le rang 0 de la chaine 1 est-il plus grand que le meme rang de la chaine 2.
J'ai bien lu le poste qui plus bas mais j'ai rien compris!!
Marsh Posté le 16-05-2005 à 10:12:54
ok on en apprend tout les jours je vais tester ça de suite!!
Marsh Posté le 16-05-2005 à 11:19:06
bon en effet c'est GOOD ta solution!
Donc je récapitule mon problème:
1=> je met dans un fichier le contenue d'une chaine. Scalar(@chaine) me retournait bien 50 donc 50 valeures.
2=> Apres j'ouvre mon fichier et j'affecte son contenue à @chaine2 si j'effectue un print de chaine2 j'avais bien ma chaine de type valeur espace valeur espace .... mais lorsque je faisais scalar(@chaine2) cela me retournai 1 donc pas bon!!!!
3=> donc la solution proposée par Elmoricq est( attention utilisation de cpp lol:
Code :
|
ce qui a pour effet de virer les espaces et d'en remttre d'autre donc apres mon scalar(@chaine2) je retrouve mes 50 valeures et la je px en choisir une parmis 50
voila merci a tous!!!!
Marsh Posté le 16-05-2005 à 11:22:46
mc40 a écrit : 1=> je met dans un fichier le contenue d'une chaine. Scalar(@chaine) me retournait bien 50 donc 50 valeures. |
Au lieu de t'embêter à tout ça, lorsque tu stockes dans le fichier, tu devrais plutôt stocker "join '\n', @chaine".
Comme ça, quand tu relis ton fichier, tu stockes directement 50 lignes, et pas une ligne de 50 valeurs. Et tu n'as plus besoin de bricoler (parce que, bon, le split/join c'est pas tres beau comme procédé, je trouve)
Marsh Posté le 16-05-2005 à 12:08:11
Citation : pospos a dit: ca me parait bizare ton truc |
Excuse moi j'avais pas vu ta réponse!!
En effet je suis d'acord mais non il me met un espace entre mes valeures donc dans mon fichier je n'ai qu'une ligne enfin!!!
En suite Elmoricq j'ai en effet mis join "\n" mais à ma grande surprise il m'a pris mon \n comme des caractères et non comme un retour chario!!! alors que dans l'éditeur il me le met bien en rose donc il a reconnu mon \n je capte pas tout mais bon la ça marche!!
Marsh Posté le 16-05-2005 à 14:25:29
Hmm. Une erreur de ma part dans mon post.
Evidemment avec des apostrophes, ça ne peut pas marcher. Désolé.
Marsh Posté le 13-05-2005 à 21:08:26
Bon je savais que j'étais pas fait pour la prog mais la j'en peux plus!!!!
#! /usr/bin/perl
use strict;
my $val;
my $vall;
my @FCS_file;
my @FCS_mesure=(0,0,109,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
my $file = 'FCS_buffer.txt';
open(FIC,$file) or die;
@FCS_file = <FIC>;
close(FIC);
print "FCS_file = @FCS_file\nFCS_mesure= @FCS_mesure\n";
my $val = @FCS_file[2];
print "FCS_file[2] = $val\n";
my $vall = @FCS_mesure[2];
print "FCS_mesure[2] = $vall\n";
RESULTAT!!!!
FCS_file = 0 0 109 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
FCS_mesure= 0 0 109 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
FCS_file[2] =
FCS_mesure[2] = 109
POURQUOI LES FCS_FILE NE S AFFICHE PAS !!!!!!! GRRRRRRRRRRRRRR
Message édité par mc40 le 16-05-2005 à 10:00:03