Bonjour à tous,
Cela faisait un moment que je n'avais pas touché à PERL et il me le fait bien comprendre. On dirait une vieille fille acariatre !![]()
J'écris un script afin de recense toutes les variables incluses dans des fichiers fortran de common (ce sont mes includes en fait). Avec ceci, je souhaite tester un autre répertoire contenant tous les includes de ma boîte en cherchant d'éventuels doublons.
Voici le code que j'ai pondu :
Comme vous le voyez, il n'est pas fini mais ce n'est pas le problème. J'essaye de simplement tester ce que j'ai déjà fait avec l'appel :
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 #!/usr/bin/perl ########################################## # MAIN # ########################################## $hslinc = "/vobs/per/hsp/HSL/INC"; $clist = $hslinc."/clist.log"; $rlist = $hlsinc."/rlist.log"; $path = $ARGV[0]; &list_commons($path); &check_commons; ########################################## # list_commons # # role; lists all commons in HSLINC # # input: none # # output: none # ########################################## sub list_commons{ #Input parameters: #a folder to scan containing include files my($file); #Open file which lists all commons included #in input directory given by user open(CLIST,">".$hslinc."/clist.log") || die "Sorry, I cannot create ".$clist.".\n"; #Go to input director $path = $_[0]; chomp($path); if(-d $path){ chdir($path) || die "Sorry, I cannot cd to".$path.".\n"; foreach $file (<*.h>) { open(FILTMP,$file) || die "Sorry, I cannot read ".$file.".\n"; while (<FILTMP>){ chomp; if ($_ =~ /^ COMMON\//*/){#pas sur de ce regexp... #traitement de SPLIT a faire sur la liste des commons #sur cette ligne et les suivantes } } close(CLIST); } } else{ print $path."is not a directory\n"; } } ########################################## # check_commons # # role; lists all commons in HSLINC # # input: none # # output: none # ########################################## sub check_commons{ chdir($hslinc); open(CLIST,$clist) || die "Sorry, I cannot read ".$clist."\n"; #TANT_QUE CLIST n'est pas lu entièrement REPETER # Lire mot; # chomp($word); # system("grep -w $word * > $rlist"); #FIN_TANT_QUE }
Je ne comprends pas vraiment cette erreur...> perl check_commons.pl /home/av_hsp/VALIDATION_SOGETI/FEP_GV10/3/VALID/FLIPTEST/SRC/INCLUDE
Can't modify not in scalar assignment at check_commons.pl line 5, near ""/vobs/per/hsp/HSL/INC";"
BEGIN not safe after errors--compilation aborted at check_commons.pl line 31.
Je récapitule :
En fait check_commons, pour le moment en tout cas, ne retournera dans le fichier RLIST seulement la sortie de la commande UNIX
- un "main"
- deux subroutines appelées
- list_commons qui liste toutes les variables déclarées
- check_commons qui vérifie les doublons
Voilà, je vois bien que j'ai du m...der quelque part mais vu que je suis obligé de faire cela en plus du reste et que c'est censé me faciliter la vie (631 fichiers à passer en revue
Code : Sélectionner tout - Visualiser dans une fenêtre à part grep -w $variable *.h > $rlistalors pour faire ce taf à la main)...
Merci d'avance
Partager