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

En PERL d'après mes souvenirs
Tes souvenirs sont bons ;-)
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