uriel blood pt.2 | bon, ca fait un moment que je m'etais pas remis au Perl mais quand meme
j'ai un repertoire qui contient des fichiers dont je veux recuperer quelques infos que je mettrais dans un fichier csv.
au depart, j'avais fait un code pour 1 fichier pris en argument, qui fonctionne nickel. Je rajoute une boucle sur le repertoire et la, ca ne fonctionne plus... ca doit etre tout con, mais j'ai le nez dessus depuis des heures et pas moyen
voici le code complet (oui, je sais y a des trucs louches, j'optimiserais plus tard)
Code :
- #! /usr/bin/perl
- print STDOUT "RUNNING EXTRACT GAMESS INFORMATIONS SCRIPT\n";
- #create the file which will contains the result
- $outname = "result.csv";
- open(OUT,">>${outname}" ) or die ('Error creating the file');
- #open the current directory and put files in an array
- opendir(MY_DIR,"." ) or die "error reading the directory : $!";
- @all_files = grep !/^\.\.?\z/, readdir MY_DIR;
- closedir MY_DIR;
- print STDOUT "File name,Number of cartesian gaussian basis function,Number of occupied orbitals,Finale energy\n";
- print (OUT "File name,Number of cartesian gaussian basis function,Number of occupied orbitals,Finale energy\n" );
- #parse all the files c'est la que le probleme arrive
- foreach $gamessfile (@all_files){
- #open the output file of gamess
- open(INPUT,"<$gamessfile" );
- $lines = 0;
- while (sysread INPUT, $buffer, 4096) {
- $lines += ($buffer =~ tr/\n//);
- }
- close(INPUT);
- print STDOUT "\n".$gamessfile.",";
- open(INPUT, "<$gamessfile" );
- while ($i<=$lines){
- if ($list[3] eq "GAUSSIAN" && $list[5] eq "FUNCTIONS" ){
- print STDOUT $list[7].",";
- print (OUT $list[7]."," );
- }
- if ($list[4] eq "(ALPHA)" ){
- print STDOUT $list[6].",";
- print (OUT $list[6]."," );
- }
- if ($list[0] eq "FINAL" ){
- print STDOUT $list[4].",";
- print (OUT $list[4]."," );
- }
- @list = &readline();
- $i+=1;
- }
- close(INPUT);
- }
- close(OUT);
- sub readline()
- {
- chop($line= <INPUT> );
- $line =~ s/^\s+//;
- @list = split(/\s+/,$line);
- return(@list);
- }
|
pourtant il affiche bien tous les noms de fichier (print STDOUT "\n".$gamessfile.","; ) mais il ne recupere pas les donnees dedans
vous voyez un truc enorme? Message édité par uriel le 02-11-2004 à 15:40:21 ---------------
IVG en france
|