Bonjour,
J'ai un script qui exploite 2 tables différentes. J'arrive à connaitre la présence d'une chaine de caracteres du tableau 1 dans le tableau 2.
Je voudrais pouvoir traiter la ligne du tableau 2 sur laquelle pointe ma recherche.
Voici le code existant :
Comment compléter cette commande
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 #!/usr/bin/perl $script_name = "update_footprint.pl"; $CR5ROOT = $ENV { "CR5ROOT" }; $CR5_PROJECT_ROOT = $ENV { "CR5_PROJECT_ROOT" }; # $ARCH is needed by some cr5_func.pl subs $ARCH = "svr4"; $ARCH = "nt86" if ($^O =~ /win/i); # some have MSWin32, some Windows_NT if ($ARCH ne "nt86") { die "ERROR: ARCH=$ARCH is not supported."; } if (-s "$CR5_PROJECT_ROOT/zeao/bin/cr5_func.pl") { require "$CR5_PROJECT_ROOT/zeao/bin/cr5_func.pl"; } elsif (-s "$CR5ROOT/zeao/bin/cr5_func.pl") { require "$CR5ROOT/zeao/bin/cr5_func.pl"; } else { print "Error in $script_name: Not found:\n"; print " \$CR5_PROJECT_ROOT/zeao/bin/cr5_func.pl and\n"; print " \$CR5ROOT/zeao/bin/cr5_func.pl\n"; $exit = 2; #goto Exit; } $fileParameter = "d:/DATA/Adeneo/ReUse/a_maj_footprint_module/extract_reuseprop.blp"; $fileCount = 1; $NbPcb = 0; # Extraction BoardListProcessor sur le job et les modules # Le pcb de reference s appelle "job" # Les modules ont un nom qui commence par "4" @filelist = &find_files(".", ".pcb"); # from cr5_func.pl foreach $f (sort(@filelist)) { if( $f =~ m/.pcb$/ ) { #print "toto\n";#Debug $f = substr($f, 0, -4); if( $f =~ "job") { $fileFicListJ = "c:/temp/perl_footprintjob.txt"; #test l existance du fichier et destructuion si il existe if (-e $fileFicListJ) { unlink $fileFicListJ; } print "job\n";#Debug `blistp $f -p $fileParameter -o $fileFicListJ -m batch\n`; } else { if( $f =~ /^\.\/4/) { $fileFicList = "c:/temp/perl_footprint_".$fileCount.".txt"; #test l existance du fichier et destructuion si il existe if (-e $fileFicList) { unlink $fileFicList; } print "nonjob $f $fileFicList\n";#Debug `blistp $f -p $fileParameter -o $fileFicList -m batch\n`; $fileCount++; $NbPcb++; } } } } # Calcul du nb de PCB hors job # $NbPcb = $NbPcb-1; print "Il y a $NbPcb module(s)\n";#Debug # Traitement des reports du BoardListProcessor # Concateantion des différents modules $fileModu = "c:/temp/perl_footprintmodu.txt"; #test l existance du fichier et destructuion si il existe if (-e $fileModu) { unlink $fileModu; } open MODU,">>$fileModu" or die "E/S : $!\n"; for ($i = 1; $i <= $NbPcb; $i++) { open LIRE_MOD, "<c:/temp/perl_footprint_".$i.".txt" or warn "E/S : $!\n"; while ($Ligne = <LIRE_MOD> ) { print MODU $Ligne; } } close <MODU>; # Traitement principal open JOB, "<$fileFicListJ" or warn "E/S : $!\n"; open MODU, "<$fileModu" or warn "E/S : $!\n"; # Sauvagarde fichier dans un tableau # en même temps je fais un chomp sur chaque element map { chomp } @module = <MODU>; map { chomp } @job = <JOB>; print "$#job\n";#Debug print "$#module\n";#Debug $x=1; $y=1; while($x<=$#job){ $job[$x] =~ s/\s+/ /g; #remplace des séries d'espaces par un seul @job_l = split (/ /, $job[$x]); # print "Ref ReUse : $job_l[1]\n"; # print "X : $x\n"; if (grep(/$job_l[1] /, @module)){print "$x : $job_l[1] present dans module\n"; } $x++; }
pour avoir le numéro de la ligne concernée dans le tableau 2 (module) ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (grep(/$job_l[1] /, @module)){print "$x : $job_l[1] present dans module\n"; }
Partager