Bonjour !!
Dans ton code, tu devrais supprimer la partie qui écrit dans le fichier, afficher à l'écrant et rediriger le tout dans un fichier fonctionne très bien et en simplifie un peu (pas de @tab, ni de push, ni de boucle foreach).
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
|
#!/usr/bin/perl -w
use strict;
# Variables visibles et modifiables dans ta fonction
my $fichier_initial = "source.txt";
my $fichier_modifie = "fichier_modifie.txt";
&traite_fichier();
sub traite_fichier {
my $balise;
my $begin;
my $duration;
# lecture du fichier initial
open (LECTURE, $fichier) || die ("pb d'ouverture du fichier $fichier $! ");
while (<LECTURE>) {
chomp $_; #suppression du caractere \n
# mettre .+ pour ne pas prendre les _s avec seulement des #
if ($_ =~ /^\#\w.+/) {
print "\n" . $_;
} elsif ($_ =~ /^\$deb/) {
print " (" . $_ . " ";
} elsif ($_ =~ /^\$dur/) {
print $_ . ")";
} elsif ($_ =~ /^\#img/) {
print $_;
}
}
} |
Voilà un peu l'idée, il te reste à jouer avec les REGEX et la fonction SPLIT pour bien tout afficher.
Après
./test.pl > fichier_modifie.txt
te donne le fichier modifié.
En espérant que cela t'aide un peu.
Partager