bonjour
merci d'avance de porter votre aide à mon travail
j'ai un problème que je ne sais pas comment le résoudre

mon test source est:
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
 
SRFIL,DBG=H'F':DD= 07-5-14;
 
   CMD SRFIL  00002   07-05-15 09-30-53
   INP SRFIL  00002   07-05-15 09-30-53
 
 
 
   RES SRFIL  00002   07-05-15 09-30-53
    CEN=1/07-05-15/09 H 30 MN 53/LISTAGE SURETE DE FONCTIONNEMENT
    TRAITEMENT TDRHM0 ACC
    07-05-14/13 H 22 MN 29 EVT=02 :DEBUT INIT.
      /AM = SMB6 ETAT=BLOS AF=PUPE1
      / 0202 0705 1413 2229 0485 0152 0000 0000 0000 0000 0000 0000
      / 12AE 1100 0004 8512 0000 0000 0000 0000 0000 0000 0000 0000
      / 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0004 8512
      / 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
      / 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
      / 0000 0000 0000 0000 0000 0000 00
 
	07-05-14/23 H 10 MN 46 EVT=03 :FIN   INIT.
      /AM = SMB7 ETAT=ES   
      / 0203 0705 1423 1046 0486 010A 0109 017D 0151 0000 0000 0000
      / 11AE 1100 0004 8611 0001 0A01 0001 0901 0001 7D01 0001 5101
      / 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0004 8512	  
      / 8000 0010 0000 0010 0000 0010 0000 0000 0000 0000 00
 
    07-05-14/23 H 10 MN 46 EVT=03 :FIN   INIT.
      /AM = SMB7 ETAT=ES   AF=TR2+MQ2+GX2+PCB
      / 0203 0705 1423 1046 0486 010A 0109 017D 0151 0000 0000 0000
      / 11AE 1100 0004 8611 0001 0A01 0001 0901 0001 7D01 0001 5101
      / 8000 0010 0000 0010 0000 0010 0000 0000 0000 0000 00
 
    TRAITEMENT TDRHM0 EXC
 
COMMANDE EXECUTEE
 
   RPT SRFIL  00002   07-05-15 09-30-53
       EXC
 
 
===============================================================================
 
=========================== FIN MACRO =================================
voila mon code
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
 
#!/usr/bin/perl
use strict; use warnings;
 
my $basedir = 'C:/Documents and Settings/farid/Bureau/9cegetel/traitement';
 
open my($src),'<', "$basedir/testsrc.txt"
   or die "E/S : $!\n";
 
open my($out), '>>', "$basedir/rslt.txt"
   or die "E/S : $!\n";
 
# liste des commandes
my @commands = qw(
 
  ALAIL
  ANOIL
  NSSIN
  SRFIL
  ESMIN
  GLRIL
  DMPIL
 
);
 
# construction de la regex pour reconnaître l'une de ces commandes
# en début de ligne (éventuellement après quelques espaces/tabulations)
# on capture la commande utilisée
# aspect final de la regex : m/^\s*(SRFIL|ESMIN|...|DMPIL)/
my $rx_string = join '|', map { quotemeta $_ } @commands;
my $rx_commands = qr/^\s*($rx_string)/;
 
 
# variable d'état pour savoir si l'on se trouve dans un paragraphe
# qu'on veut imprimer ($in == 2), après une commande ($in == 1),
# ou en dehors de tout cela ($in == 0)
my $in = 0;
while(<$src>){
    if( not $in and my ($cmd) = (m/$rx_commands/) ) {
        print $out "$cmd:\n\n";
        $in = 1;
    }
    elsif( $in == 1 and m/^\s*TRAITEMENT ...... ACC/ ) {
        $in = 2;
    }
# anaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa pour SRFIl
	while($in == 2){
		if(/(d{2}-d{2}-d{2})\/\(d{2}\ H \d{2}\ MN \d{2}) (EVT=.*)$/){
			my $date = $1;
			my $heure = $2;
			my $evt = $3;
		}
 
		elsif(/(AM =\w+) (ETAT=\w+) (AF=.*)$/){
			my $am = $1;
			my $etat = $2;
			my $af = $3;
		}
 
		elsif(while(/(\/\ .*)$/)){
			my $msg = $1;
		}
	print $date, $heure, $evt, $am, $etat, $af, $msg;
	}
###  machi anaaaaaaaaaaaaaaaaaaaaaaaa	
    elsif( $in == 2 and m/^\s*TRAITEMENT ...... EXC/ ) {
        $in = 0;
       # print $out "\n\n";
    }
    elsif( $in == 2 ) {
        print $out $_;
    }
}   
 
close $src;
close $out;
je voudrai récupérer à chaque fois les élèment de chaque message

et voila ce qu'il me donne comme faute que je ne comprend pas
il me donne la faute suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Unmatched ) in regex; marked by <-- here in m/(d{2}-d{2}-d{2})\ H \d{2}\MN \d{2}) <-- HERE (EVT=.*)$/ at line 47
Merci beaucoup d'avance de votre aide, j'en ai vraiment besoin