Salut a tous,

Je viens tout juste de me mettre au Perl et j'essaye de parser un fichier qui se trouve etre de la sorte :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
 
$truc
.....
#p ()
    $deb (5s)
    $dur (10s)
 
    #img (myPic.jpeg)
        $deb (3s)
        $dur (2s)
#/p
Et a la place je voudrai réécrire le fichier pour que les données se presentent comme ca :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
 
$truc
.....
 
#p (5s 10s)
    #img(myPic.jpeg 3s 2s)
#/p
Donc pour cela j'ai essayé d'ecrire un code, et j'arrive jusqu'ici (apres j'avoue que je suis paumé !!! )

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
 
 
#!/usr/bin/perl -w
use strict;
use Carp;
 
my $fichier_initial = "source.txt";
my $fichier_modifie = "fichier_modifie.txt";
 
&traite_fichier($fichier_initial, $fichier_modifie);
 
 
sub traite_fichier 
{
  # passage des parametres $fichier <- $fichier_initial
  # $fichier_modif <- $fichier_modifie
  my ($fichier, $fichier_modif) = @_;
  my @tab;
  my $balise;
  my $begin;
  my $duration;
 
  # lecture du fichier initial
  open (LECTURE, $fichier) || die ("pb d'ouverture du fichier $fichier $! "); 
  while (my $ligne = <LECTURE>)
  {
    chomp ($ligne); #suppression du caractere \n
    if ($ligne =~ /^\#(\w.*?)/)
    {
      $balise=$ligne;   
    }
    elsif ($ligne =~ /^(\$deb)/)
    {
      $begin=$ligne;
    }
    elsif ($ligne =~ /^(\$dur)/)
    {
      $duration=$ligne;
    }
    else 
    {
      push (@tab,$balise.$begin.$duration);
    }
  }
 
  #sortie sur l'ecran
  foreach my $case (@tab)
  {
    print "$case\n";
  }
  close (LECTURE);
 
  #ecriture du fichier modifie
  open (ECRITURE, ">$fichier_modif") || die ("pb d'ecriture dans le fichier $fichier_modif $! ");
  foreach my $case (@tab)
  {
    print ECRITURE "$case\n";
  }
  close (ECRITURE);
}
Merci à tous ceux qui pourront m'aider