dreamkiller | Salut merci pour ton aide.
Je pense que le code est loin d'etre propre (mes cours de dev sont loin...)
Code :
- sub creloctac (){
- my $add_line=0;
- my $nb_ligne=0;
- my @tab_temp;
- $tab_temp[0]=$tab_valeur[0]; ###entete
- for (my $j=1;$j<=$tab_index_ligne;$j++)
- {
- my $tache_creloctac=$tab_valeur[$j][2];
- $nb_ligne++;
- $tab_temp[$nb_ligne]=$tab_valeur[$j];
- my $deuxieme_passage=0;
- open(my $handle_list_tache_creloctac, "<", $list_tache) or die "Can't open $list_tache: $!"; #####Ouverture du fichier TACHES en mode lecture
- while (<$handle_list_tache_creloctac> ) ####Parcourt du fichier en mode ligne a ligne
- {
- $add_line=0;
- my $ligne=$_;
- if ($ligne=~ /CRELOCTAC,/) ####Si la ligne commence par CRELOCTAC, alors
- {
- if ($ligne=~/TACHE=$tache_creloctac,/) ###Si la ligne contient TACHE=matache, alors
- {
- if ($ligne=~ /LOC=(\w+),/)
- {
- $loc=$1;
- $add_line=1;
- }
- if ($ligne=~ /DEFACT=(\w+),/) #### Si la ligne contient DEFACT=N, alors on recupere dans la variable $1 le contenue de ce qui se trouve entre le = et la ,
- {
- $defact=$1;
- $add_line=1;
- }
- if ($ligne=~ /CONDACT=(\w+),/) #### Si la ligne contient CONDACT=macond, alors on recupere dans la variable $1 le contenue de ce qui se trouve entre le = et la ,
- {
- $condact=$1;
- $add_line=1;
- }
- if ($ligne=~ /DEFPRO=(\w+),/) #### Si la ligne contient DEFPRO=O, alors on recupere dans la variable $1 le contenue de ce qui se trouve entre le = et la ,
- {
- $defpro=$1;
- $add_line=1;
- }
- if ($ligne=~ /,DEFEXT=(\w+|\*?),/) #### Si la ligne contient DEFEXT=O, alors on recupere dans la variable $1 le contenue de ce qui se trouve entre le = et la ,
- {
- $defext=$1;
- $add_line=1;
- }
- if ($ligne=~ /DEFSNB=(\w+),/) #### Si la ligne contient DEFSNB=O, alors on recupere dans la variable $1 le contenue de ce qui se trouve entre le = et la ,
- {
- $defsnb=$1;
- $add_line=1;
- }
- if ($ligne=~ /DEFSWT=(\w+),/) #### Si la ligne contient DEFSWT=O, alors on recupere dans la variable $1 le contenue de ce qui se trouve entre le = et la ,
- {
- $defswt=$1;
- $add_line=1;
- }
- if ($ligne=~ /DEFLBL=(\w+),/) #### Si la ligne contient DEFLBL=O, alors on recupere dans la variable $1 le contenue de ce qui se trouve entre le = et la ,
- {
- $deflbl=$1;
- $add_line=1;
- }
- if ($ligne=~ /DEFCYC=(\w+),/) #### Si la ligne contient DEFCYC=O, alors on recupere dans la variable $1 le contenue de ce qui se trouve entre le = et la ,
- {
- $defcyc=$1;
- $add_line=1;
- }
- if ($ligne=~ /DEFCPT=(\w+),/) #### Si la ligne contient DEFCPT=O, alors on recupere dans la variable $1 le contenue de ce qui se trouve entre le = et la ,
- {
- $defcpt=$1;
- $add_line=1;
- }
- if ($add_line != 0)
- {
- if ($deuxieme_passage==0)
- {
- $tab_temp[$nb_ligne][12]=$loc;
- $tab_temp[$nb_ligne][13]=$defpla;
- $tab_temp[$nb_ligne][14]=$defact;
- $tab_temp[$nb_ligne][15]=$condact;
- $tab_temp[$nb_ligne][16]=$defpro;
- $tab_temp[$nb_ligne][17]=$defext;
- $tab_temp[$nb_ligne][18]=$defsnb;
- $tab_temp[$nb_ligne][19]=$defswt;
- $tab_temp[$nb_ligne][20]=$deflbl;
- $tab_temp[$nb_ligne][21]=$defcyc;
- $tab_temp[$nb_ligne][22]=$defcpt;
- &ecriture_fichier($loc,$defpla,$defact,$condact,$defpro,$defext,$defsnb,$defswt,$deflbl,$defcyc,$defcpt,"\n" );
- $deuxieme_passage=1;
- }
- else
- {
- my @replacement;
- for(my $k=0;$k<$tab_index_champs;$k++)
- {
- push (@replacement,$tab_temp[$nb_ligne][$k]);
- }
- #print "@replacement\n";
- $nb_ligne++;
- splice @tab_temp,$nb_ligne, 0, @replacement;
- # $tab_temp[$nb_ligne][12]=$loc;
- # $tab_temp[$nb_ligne][13]=$defpla;
- # $tab_temp[$nb_ligne][14]=$defact;
- # $tab_temp[$nb_ligne][15]=$condact;
- # $tab_temp[$nb_ligne][16]=$defpro;
- # $tab_temp[$nb_ligne][17]=$defext;
- # $tab_temp[$nb_ligne][18]=$defsnb;
- # $tab_temp[$nb_ligne][19]=$defswt;
- # $tab_temp[$nb_ligne][20]=$deflbl;
- # $tab_temp[$nb_ligne][21]=$defcyc;
- # $tab_temp[$nb_ligne][22]=$defcpt;
- }
- }
- }
- }
- }
- close $handle_list_tache_creloctac or die "Can't close $list_tache: $!"; ### Fermeture du fichier TACHE2
- }
|
Le code que j'ai donné au depart a quelque peu changé du coup maintenant j'ai une erreur d'un autre type
Code :
- Can't use string ("V2_XCH_CHJ_1_JOURNALIER" ) as an ARRAY ref while "strict refs" in use at ./concatenation_extraction_vega3.pl line 243.
|
Pour le contenu de tab_val et tab_temp se sont des tableaux de tableaux donc oui j'ai compris que ARRAY 0x ..... c'etait normal. |