Problem en langage PERL

pierrot75 -  
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjour,
je vous met ci dessous un programme que j'ai ecrit en langage PERL
les permieres lignes marchent.
Comme je suis en stage en angleterre donc les commentaires que j'ai fait sont en anglais pas forcement tres bon.

#!/usr/bin/perl -w

open (OUT, ">test3.txt");

##open VCS file

open(FILE,"<essai1.vcs");

##initilization

$t=0;

##read the file and search the ligne begining by guid(reference of material)
##and mass(density mass of each material) and take it in a matrix

while ($lines=<FILE> and $t<43)
{
if ($lines=~" <GUID>")
{
if ($t>25)
{
$lineg=$lines;
$g=substr($lineg,12,36);
}
$t++
}
if ($lines=~" <Mass>")
{
$b=substr($lines,12,4);
my(@row) = ($a, $b);
push (@matrix , \@row);
}
}

foreach $n (@matrix)
{
foreach $k (@{$n})
{
print OUT "$k ";
}
print OUT "\n";
}


##first matrix column and line is number 0
##in the description we have $matrix[line][column]
##here we have in the column number 0 the reference GUID and the column 1 MASS witch is a densitymass
##for the first column of each line of the matrix we looking for the first line which begin by " <Material>"
##we just want to look at the first one and to compare it to $c

for ( $j=0; $j<15; $j++)
{
$i=0;

$c=$matrix[$j][0];

print OUT "$c\n";

while ($lines=<FILE>)
{
if ($lines=~" <Material>")
{
$i++
if ($i = 1)
{
$lined=$lines;
$d=substr($lined,22,36);
print OUT "$d\n";
if ($c = $d)
{
$densitymass=$d;
}
else
{
print OUT "b\n";
}
}
}
}
}

Voila le problem c'est qu'il ne compare rien et meme ne m'ecrit plus rien sur mon fichier de sorti donc voila le truc
Je vous remercie pour vos reponse rapide
A voir également:

5 réponses

jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
 
En PERL d'après mes souvenirs (ca fait bien un an que j'en ai pas fait ^^)
les comparaisons c'est == ou eq, mais pas =

donc tous tes tests if ($i = 1) , if ($c = $d) , c'est pas des comparaisons mais des affectations
1
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

En PERL d'après mes souvenirs
Tes souvenirs sont bons ;-)
0
pierrot75 > lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
 
alors lami20j
ce script dans sa premiere partie construit une matrice avec dans l;a premiere colonne une reference avec des caracteres alphanumeriques et dans la seconde colonne sa correspondance en terme de densite massique (entre nous c'est marque en anglais ce que fais chaque partie)
ensuit dans la seconde partie en fait je regarde dans le fichier d'entree <FILE>et demande de regarde la ligne commencant par <material>.Jusqu'ici mon programme fait ce que je veux (je ne veux que la premiere ligne qui correspond a ca).
Ensuite j'attribue a $lined la valeur des caractere alphanumerique.
Si elle est egale a celui que j'ai mis dans la valeur $c alors je l'ecrit dans le fichier OUT (bon en fait je veux mettre l'autre partie de la matrice lui correspondant mais ca je sais commment faire)
La je viens de changer le truc mais il bug et ne me fait pas de fichier de sortie ou je peu voir au moins ma matrice
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

Tu pourras aussi nous dire ce qu'il est censé faire ton script.
Coller comme ça un code et dire que ça ne marche pas n'est pas vraiment d'un grand aide.
Merci.
0
jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
 
:)
0
pierrot75
 
PS
Merci en tout cas pour la petite revision en fait je connais que le langage C++ et C mauis pas PERL mais je tente de me debrouiller
merci a vous deux
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Re,

Ben, mets un espion print "\$c = $c et \$d = $d\n"; pour voir ce que ça donne.
0