Chaine de caractère et Perl

Fermé
flongo Messages postés 53 Date d'inscription jeudi 2 avril 2009 Statut Membre Dernière intervention 9 décembre 2009 - 14 avril 2009 à 17:30
 loupius - 15 avril 2009 à 01:33
Bonjour,

J'ai un fichier txt composé de chiffres et lettres.
Je veux extraire que ce qui m'interresse dans ce fichier. Par exemple mon fichier est comme suit:

INFO: CLOSE FILE 00000000000000000000.mes->0
Réception 000000 - Date livraison 20080101120000 - Identité MleX (Y) ......

Ce que je veux récupérer est en gras a savoir:

- 00000000000000000000
- 000000
- 20080101120000
- Mle
- X
- Y

J'ai commencé à faire mon programme qui est comme suit :

#!/usr/bin/perl

open (FICHIER, "<P:\\Resul\\reception.txt") or die("Impossible de lire le fichier! \n");
open (WRITER, ">P:\\Resul\\reception2.txt") or die("Impossible d'ecrire dans le fichier! \n");
$ligne=<FICHIER>;

foreach (<FICHIER>) {

$num_mess=substr($ligne,18,20) if /INFO : Close File/ .. /.mes -> 0/;
print $num_mess;
print WRITER;

$num_recep=substr($ligne,10,6) if /Réception/;
print writer;
}

Ca marche pas des masse!

Quelqu'un peut ill m'aider? Y a t'il moyen de supprimer les mots clés qui sont tjs dans mon fichier?

Merci
CDLT
A voir également:

1 réponse

Ah Perl est un langage particulier, et trop souvent on l'utilise en mimant d'autres langages, dommage.
Je ne vais bien sûr pas faire tout ton exercice mais seulement la première extraction, ce qui nous donne:
#!/usr/bin/perl 
use strict;
use warnings;

open(LIRE, "fichier1.txt") or die("erreur fichier lecture");
open(ECRIRE, ">fichier2.txt") or die("erreur fichier écriture");

while(<LIRE>){
  print ECRIRE "$1\n" if /INFO: CLOSE FILE (\d+)\.mes->0/;
}

close(LIRE);
close(ECRIRE);
La recherche est peut-être à adapter car j'ai supposé que la chaîne était constituée uniquement de chiffres.
Tu vois, c'est concis. Je te laisse faire le reste.
Bon courage.
0