je poste un code qui m'aider sur les multiples questions que je vous ai posé dernièrement (ce script fait un peu le contraire de ce que je veux)
celui ci publie les fichiers dont je vais récupérer les infos dans mon propre script

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
 
my %v_map; # mappage nom de company nom de caisse
 
 
sub GenerateLastYearDateDDMMYY
#date du dernier jour de l'année dernière
  {
    my $v_tmp = $ENV{"NUL_J_YY"};
    my $v_lastYear = $v_tmp-1;
    my $v_ret = '';
 
 
    if( $v_lastYear < 10 )
      {
        $v_ret = '3112'.'0'.$v_lastYear;
      }
    else
      {
        $v_ret = '3112'.$v_lastYear;
      }
    return $v_ret;
  }
 
 
sub GenerateYesterdayDateDDMMYY
#date d'hier
  {
    my $v_y=$ENV{"BAT_JM1_YY"};
    my $v_m=$ENV{"BAT_JM1_MM"};
    my $v_d=$ENV{"BAT_JM1_DD"};
    my $v_ret = $v_d.$v_m.$v_y;
    return $v_ret;
  }
 
 
sub GenerateAsOfYYYYMMDD
#date du jour
  {
    my $v_y=$ENV{"PAR_J_YYYY"};
    my $v_m=$ENV{"PAR_J_MM"};
    my $v_d=$ENV{"PAR_J_DD"};
    my $v_ret = $v_y.$v_m.$v_d;
    return $v_ret;
  }
 
 
sub LoadCompanyFile
#mapping du fichier ini contenant la liste des caisses
  {
    my $v_fileCaisses = "$ENV{STKROOT}/batch/rep_mapping_caisse.ini";
    my $v_caisseName;
    my $v_company;
    my $v_line;
 
 
    if( ! open( FILE_CAISSES, $v_fileCaisses ) )
# si le fichier n'existe pas erreur
      {        
        printf( "ERREUR DE LECTURE DU FICHIER $v_fileCaisses : $! \n" );
        return 1;
      }
 
    while( <FILE_CAISSES> ) 
      { # pour chaque ligne lue
        $v_line = $_;
        if( $v_line =~ m/^([a-z]+):([A-Z]+):([A-Z]+)$/ )
          {            
            $v_caisseName = $1;
            $v_company = $2;
            $v_map{ $v_company } = $v_caisseName; # on insert dans la map
          }
      }
    close( FILE_CAISSES );
    return 0;
  }
 
 
sub RetrieveCompanyFromFileName
  {
    my $v_caisse = "";
# par defaut le chemin est vide
    $v_caisse = $_[0];
 # l'indice est à 0
 
 
    if( $v_caisse =~ m/([0-9a-zA-Z\/]*)\/([0-9a-zA-Z+_.]+)_SUMMIT_([0-9a-zA-Z+.]+)_([0-9a-zA-Z+.]+)_([0-9a-zA-Z+._]+)/ )
      {
        $v_caisse = $3;
      }
    else
      {
        $v_caisse = "";
      }
 
 
    return $v_caisse;
  }
 
 
#*****************************
#*   main
#*****************************
my $v_asOfDate = GenerateAsOfYYYYMMDD;
my $v_timeStamp = $v_asOfDate;
my $v_startDate = GenerateLastYearDateDDMMYY;
my $v_endDate = GenerateYesterdayDateDDMMYY;
my $v_retCode = 0;
my $v_spoolDir = $ENV{"SUMMITSPOOLDIR"};
my @v_fileList;
my $v_resuFile ='';
my $v_buff1 = '';
my $v_exeDIR = batchUtils::GetScriptAbsDir;
my $v_line = "";)
my $v_fileNameTmp = "";
my $v_caisse = "";
my $v_company = "";
my $v_FileToPublished = "";
 
 
print "\nPARAMETERS:\n";
print "AsOfDate: $v_asOfDate\n";
print "StartDate: $v_startDate\n";
print "EndDate: $v_endDate\n";
print "SCRIPT DIR: $v_exeDIR\n";
 
 
# on charge le fichier de mapping des nom de caisse avec le nom des company
$v_retCode = LoadCompanyFile();
if( $v_retCode ne 0 )
  {
    error("EXECUTION COMMANDE : LoadCompanyFile() $v_retCode" );
    exit filter();
  }
 
 
# on modifie les fichiers originaux (remplacement des . par des , et suppression ds blancs) 
$v_buff1 = $v_spoolDir."/".$v_asOfDate."_SUMMIT_*_PLUPD_".$v_startDate."_".$v_endDate.".txt";
@v_fileList = glob( $v_buff1 );
 
if( ! exists( $v_fileList[0] ) )
  {
    error("EXECUTION COMMANDE : glob( $v_buff1 ) VIDE !" );
    exit filter(); 
  }
 
 
foreach( @v_fileList )
  {
    $v_fileNameTmp = $_;
 
    open( Fread, $v_fileNameTmp ); # ouverture d'un fichier en lecture ( le $_ représente le nom du fichier à lire --> contenu de l'élément courant du 
tableau  )
    open( Fmodif, ">".$v_fileNameTmp.".modif" );
    while( <Fread> ) 
      { # pour chaque ligne lue
        $v_line = $_;
        $v_line =~ s/\,/./g; # on applique une expression reguliere: substitution des ',' par des '.'
        $v_line =~ s/\ *;/;/g; # on applique une expression reguliere: substitution des series d'espaces précédent un ';' par ';'
        printf( Fmodif "%s", $v_line );
      }
    close Fread;)
    close Fmodif;
    unlink( $v_fileNameTmp );
    move( $v_fileNameTmp.".modif", $v_fileNameTmp );
  }
 
 
$v_resuFile = $v_spoolDir."/".$v_asOfDate."_SUMMIT_GCE_PLUPD_".$v_startDate."_".$v_endDate.".txt";
if( -f $v_resuFile )
  { #le fichier de concatenation existe donc on l'efface avant de creer la liste des fichiers à concatener (pour eviter de le concaterner avec lui meme
)
    unlink( $v_resuFile );
  }
 
 
#on va concatener les fichier de la liste v_fileList
# on concatene l'ensemble des fichiers du pnl 
$v_buff1 = $v_spoolDir."/".$v_asOfDate."_SUMMIT_*_PLUPD_".$v_startDate."_".$v_endDate.".txt";
@v_fileList = glob( $v_buff1 );
if( ! exists( $v_fileList[0] ) )
  {
    error("EXECUTION COMMANDE : glob( $v_buff1 ) VIDE !" );
    exit filter(); 
  }
 
 
#creation du fichier de sortie
if( open( Fcreated, ">".$v_resuFile ) <= 0 )
  {
    printf( STDERR "ERREUR: impossible de créer le fichier $v_resuFile \n");
    error( "impossible de créer le fichier $v_resuFile \n" );
    exit filter(); 
  }
 
 
#recuperation de la 1er ligne du 1er fichier
if( ! open( Fread, $v_fileList[0] ) ) # ouverture d'un fichier en lecture
  {
 printf( STDERR "ERREUR: e impossible de lire $v_line\n");
    error( "impossible de lire $v_line" );
    exit filter(); 
  }
 
 
printf( Fcreated "%s", <Fread> );
close Fread;
 
 
foreach( @v_fileList )
  {
    open( Fread, $_ ); # ouverture d'un fichier en lecture ( le $_ représente le nom du fichier à lire --> contenu de l'élément courant du tableau  )
    $v_line = <Fread>; #lecture de la 1er ligne (on l'ignore )
    while( <Fread> ) 
      { # pour chaque ligne lue
        printf( Fcreated "%s", $_ ); 
#( le $_ représente le contenu de l'élément courant lu dans le fichier, a ne pas confondre avec le $_ de la ligne de dessus )
      }
    close Fread;
  }
close Fcreated;
 
 
# on publie
$v_buff1 = $v_spoolDir."/".$v_asOfDate."_SUMMIT_*_PLUPD_".$v_startDate."_".$v_endDate.".txt";
@v_fileList = glob( $v_buff1 );
if( ! exists( $v_fileList[0] ) )
  {
    error("EXECUTION COMMANDE : glob( $v_buff1 ) VIDE !" );
    exit filter(); 
  }
 
 
foreach( @v_fileList )
  {
    $v_FileToPublished = $_;
    # on publie
    $v_company = RetrieveCompanyFromFileName( $v_FileToPublished ); # on veut le nom de la company contenu dans le nom du fichier
    if( $v_company eq '' )
      {
        printf( STDERR "WARNING: pas de company dans le nom du fichier: $v_FileToPublished\n" );
        warning( "pas de company dans le nom du fichier: $v_FileToPublished" );
      }
    else
      {
        $v_caisse = ""; 
        $v_caisse = $v_map{$v_company};
 
 
        if( ! exists( $v_map{$v_company} ) )
          {
            $v_caisse = "cds";
 
# 4412 Mathieu LOUIS on ne warning pas pour GCE_PLUPD
            if ($v_company ne "GCE")
              {
                printf( STDERR "WARNING: pas de caisse pour la company $v_company\n" );
                warning( "pas de caisse pour la company $v_company" );
              }
          }
 
 
        $v_retCode = batchUtils::Publishe( $v_timeStamp , $v_FileToPublished, "INTRA_REPORTING", "SUMMIT", $v_caisse );
        if( $v_retCode ne 0 )
          {
            error( "batchUtils::Publishe( $v_timeStamp , $v_FileToPublished, INTRA_REPORTING, SUMMIT, $v_caisse ) $v_retCode" ); 
          }
      }
  }
exit filter();
voilà...


j'ai toujours l'impression d'être un boulet quand je pose mes question, mais après quand je dois sérialiser des scripts grâce à vous je vais plus vite

mais je crois que j'ai plus le choix faut que j'achète enfin des bouquins perl et que je pratique avec acharnement pour enfin donner des conseils Jedaï, Jasmine & Co franchement merci