Bonjour,
J'ai un code perl qui me recupère des lignes.
cependant je souhaiterai garder seulement ce qui se trouve en guillemets.
voici mon code
Mon fichier en entrée :
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 # !usr/bin/perl -w use strict; use warnings; my $cpt = 0; my $i = 0; my $l =""; my @liste =(); my @tab =([0]); # Tableau des Functions Filtre avec les propriétés my $tab_ligne = 0; # Compteur des Functions Filtre print "Debut du traitement\n\n"; open FICHIER, '<', "test.apt" or die("E/S : $!\n"); my @bloc = (); while ( my $ligne = <FICHIER> ) { if (($ligne =~ /^\t*Left/) || ($ligne =~ /^\t*Top/) || ($ligne =~ /^\t*Width/) || ($ligne =~ /^\t*Height/)){ # ne rien faire } else{ # cherche la présence d'un bloc my $in_bloc = ($ligne =~ m/\"/) .. ($ligne =~ m{\w+\"}); # cherche la présence d'un bloc push @bloc, $ligne if $in_bloc; # Si l'on est dans un bloc, on remplit la table avec le nouvelle ligne if ($in_bloc =~ /E0/) { # Si l'on a trouvé le tag de fin, on traite le bloc, traitement du bloc # print "---- START IF----\n\n"; # pop @bloc; # Supprimer la dernière ligne du dernier bloc push @bloc, ""; # concatene une valeur avec une valeur "rien" pour que le tableau soit rempli $tab[$tab_ligne][$i] = join "", @bloc; $tab[$tab_ligne][$i] =~ s/\t*//g; $tab[$tab_ligne][$i] =~ s/*"//g; # $tab[$tab_ligne][1] =~ s/\"//g; # print $tab[$tab_ligne][$i]; @bloc = (); # Passer au bloc suivant $i++; $cpt++; # print "\n\n---- THE END IF----"; } } } for ($i=0; $i<$cpt; $i++){ print $tab[$tab_ligne][$i]; } print $cpt; close FICHIER; print "\n"; print "\nFin du traitement";
ce que j'obtiens :
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 .enddata Visible? Yes Left: 4.15" Top: 1.885" Width: 3.8" Height: 2.073" "1-Fully Qualified" External References? No Reject "2-Multiple Window" Instances? Yes Enable Runtime "3-Checks Of External References"? No Use Release 4.0 Scope Rules? No Edit Fields Read Only On Disable? No Libraries Visible? Yes Left: 4.15" Top: 1.885" Width: 3.8" Height: 2.073" Global "4-Declarations" Window Defaults Tool Bar Title: F&onction Menu Item: &Nouveau Status Text: Créé un nouveau document Background Text: Filtre Display Style? Etched Font Name: "5-System Default" Font Size: "6-System Default2"
ce que je voudrai obtenir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 "1-Fully Qualified" External References? No Reject "2-Multiple Window" Instances? Yes Enable Runtime "3-Checks Of External References"? No Global "4-Declarations" Font Name: "5-System Default" Font Size: "6-System Default2"
Avez vous une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 1-Fully Qualified 2-Multiple Window 3-Checks Of External References 4-Declarations 5-System Default 6-System Default2
Je pense qu'il faudrait substituer mon résultat mais je ne sais pas comment, avec quelque chose comme : $tab[$tab_ligne][1] =~ s/expression regulière//g;
Merci d'avance
Partager