PERL
Résolu/Fermé
flongo
Messages postés
53
Date d'inscription
jeudi 2 avril 2009
Statut
Membre
Dernière intervention
9 décembre 2009
-
6 avril 2009 à 12:13
flongo Messages postés 53 Date d'inscription jeudi 2 avril 2009 Statut Membre Dernière intervention 9 décembre 2009 - 6 avril 2009 à 16:59
flongo Messages postés 53 Date d'inscription jeudi 2 avril 2009 Statut Membre Dernière intervention 9 décembre 2009 - 6 avril 2009 à 16:59
A voir également:
- PERL
- Denon perl pro test - Accueil - Audio
- Active perl - Télécharger - Édition & Programmation
- PERL -- liste - Forum Perl
- Perl foreach ✓ - Forum Perl
- Perl substitution ✓ - Forum Perl
7 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
6 avril 2009 à 12:34
6 avril 2009 à 12:34
Salut,
Reception et FIN IMPORT sont sur la même ligne ?
Si c'est le cas, essais :
Cdlt
Reception et FIN IMPORT sont sur la même ligne ?
Si c'est le cas, essais :
if($Ligne=~/Reception (.*) FIN IMPORT/) { print WRITER $1; }
Cdlt
flongo
Messages postés
53
Date d'inscription
jeudi 2 avril 2009
Statut
Membre
Dernière intervention
9 décembre 2009
6 avril 2009 à 12:35
6 avril 2009 à 12:35
Non ils ne sont pas sur la meme ligne!
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
6 avril 2009 à 14:03
6 avril 2009 à 14:03
Dans ce cas-là, utilise plutôt :
my @lignes=<FICHIER>: my $ligne=join('',@lignes); # pour tout mettre le fichier dans $ligne print $1 if ($ligne =~ /Reception (.*) FIN IMPORT/s); close(FICHIER);
flongo
Messages postés
53
Date d'inscription
jeudi 2 avril 2009
Statut
Membre
Dernière intervention
9 décembre 2009
6 avril 2009 à 14:52
6 avril 2009 à 14:52
Excuse moi, je me suis trompé de prog: voila ce que tu m'as dit de mettre mais ca fonctionne tjrs pas:
open FICHIER,"<P:\\Prog_perl\\edital_pivot1.txt" or die "Ce fichier n'existe pas!";
my @lignes=<FICHIER>;
my $ligne=join('',@lignes); # pour tout mettre le fichier dans $ligne
if ($ligne =~/ Reception (.*) FIN IMPORT /s){
print $ligne; # en mettant ici print $1 ca ne fonctionne pas non plus
}
close (FICHIER);
open FICHIER,"<P:\\Prog_perl\\edital_pivot1.txt" or die "Ce fichier n'existe pas!";
my @lignes=<FICHIER>;
my $ligne=join('',@lignes); # pour tout mettre le fichier dans $ligne
if ($ligne =~/ Reception (.*) FIN IMPORT /s){
print $ligne; # en mettant ici print $1 ca ne fonctionne pas non plus
}
close (FICHIER);
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
6 avril 2009 à 16:53
6 avril 2009 à 16:53
Salut,
Ben, au lieu de faire un join pourquoi pas utiliser le mode slurp
Au lieu de
my @lignes=<FICHIER>:
my $ligne=join('',@lignes);
Mais plus élégant c'est d'utiliser la lecture par paragraphes http://www.commentcamarche.net/forum/affich 11868354 perl?#7
Ben, au lieu de faire un join pourquoi pas utiliser le mode slurp
Au lieu de
my @lignes=<FICHIER>:
my $ligne=join('',@lignes);
{ undef $/ and $fichier=<FICHIER>; }
Mais plus élégant c'est d'utiliser la lecture par paragraphes http://www.commentcamarche.net/forum/affich 11868354 perl?#7
flongo
Messages postés
53
Date d'inscription
jeudi 2 avril 2009
Statut
Membre
Dernière intervention
9 décembre 2009
6 avril 2009 à 14:40
6 avril 2009 à 14:40
Merci pour ton aide! Ca fonctionne tjrs pas! Le fichier txt que je veux créer ne se fait pas. Je te remet le code, il doit y avoir une erreur mais je la vois pas:
print "BIENVENUE DANS L EXTRACTION DES INFORMATIONS DANS LES LOGS!\n";
open FICHIER,"<P:\\Prog_perl\\edital_pivot1.txt" or die "Ce fichier n'existe pas!";
open WRITER, ">P:\\Prog_perl\\infos_pivot1.txt" or die "Le fichier ne peut etre édité!";
my $Ligne;
while ($Ligne=<FICHIER>) {
if ($Ligne =~/Reception (.*) FIN IMPORT/s){
print $1;
}
}
close FICHIER;
close WRITER;
open FICHIER,"<P:\\Prog_perl\\infos_pivot1.txt" or die "Le fichier n'existe pas !";
while ($ligne = <FICHIER>){
print $ligne;
}
close FICHIER;
Merci pour ton aide.
print "BIENVENUE DANS L EXTRACTION DES INFORMATIONS DANS LES LOGS!\n";
open FICHIER,"<P:\\Prog_perl\\edital_pivot1.txt" or die "Ce fichier n'existe pas!";
open WRITER, ">P:\\Prog_perl\\infos_pivot1.txt" or die "Le fichier ne peut etre édité!";
my $Ligne;
while ($Ligne=<FICHIER>) {
if ($Ligne =~/Reception (.*) FIN IMPORT/s){
print $1;
}
}
close FICHIER;
close WRITER;
open FICHIER,"<P:\\Prog_perl\\infos_pivot1.txt" or die "Le fichier n'existe pas !";
while ($ligne = <FICHIER>){
print $ligne;
}
close FICHIER;
Merci pour ton aide.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
6 avril 2009 à 15:21
6 avril 2009 à 15:21
S'il n'y a rien dans le fichier WRITER, c'est normal, j'ai mis print $1, pour afficher à l'écran à titre d'exemple.
Si tu veux écrire dans le fichier :
if ($Ligne =~/Reception (.*) FIN IMPORT/s){
print WRITER $1;
}
Cdlt
Si tu veux écrire dans le fichier :
if ($Ligne =~/Reception (.*) FIN IMPORT/s){
print WRITER $1;
}
Cdlt
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
squall289
Messages postés
98
Date d'inscription
mardi 31 mars 2009
Statut
Membre
Dernière intervention
29 mai 2009
13
6 avril 2009 à 14:53
6 avril 2009 à 14:53
le soucis viens je pense de la capture du texte :
if ($Ligne =~/Reception (.*) FIN IMPORT/s) Je pense qu'il faut mettre des guillemets à FIN IMPORT et Reception.
Fais un test de capture simple avec et sans guillements pour tester.
Le code de fiddy est bon, normalement ça devrait marcher.
if ($Ligne =~/Reception (.*) FIN IMPORT/s) Je pense qu'il faut mettre des guillemets à FIN IMPORT et Reception.
Fais un test de capture simple avec et sans guillements pour tester.
Le code de fiddy est bon, normalement ça devrait marcher.
flongo
Messages postés
53
Date d'inscription
jeudi 2 avril 2009
Statut
Membre
Dernière intervention
9 décembre 2009
6 avril 2009 à 15:09
6 avril 2009 à 15:09
Salut,
J'ai fait ce que tu m'as conseillé:
open FICHIER,"<P:\\Prog_perl\\edital_pivot1.txt" or die "Ce fichier n'existe pas!";
my @lignes=<FICHIER>;
my $ligne=join('',@lignes); # pour tout mettre le fichier dans $ligne
print $1 if ($ligne =~ / "Reception" (.*) "FIN IMPORT" /s);
close (FICHIER);
Mais ca fonctionne pas!
J'ai fait ce que tu m'as conseillé:
open FICHIER,"<P:\\Prog_perl\\edital_pivot1.txt" or die "Ce fichier n'existe pas!";
my @lignes=<FICHIER>;
my $ligne=join('',@lignes); # pour tout mettre le fichier dans $ligne
print $1 if ($ligne =~ / "Reception" (.*) "FIN IMPORT" /s);
close (FICHIER);
Mais ca fonctionne pas!
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
6 avril 2009 à 15:14
6 avril 2009 à 15:14
Ah non pas de guillemets lol, ça va tuer la regexp ^^.
flongo
Messages postés
53
Date d'inscription
jeudi 2 avril 2009
Statut
Membre
Dernière intervention
9 décembre 2009
>
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
6 avril 2009 à 15:25
6 avril 2009 à 15:25
ok
Voila ce que j'ai mis et ca fonctionne tjs pas :
print "BIENVENUE DANS L EXTRACTION DES INFORMATIONS DANS LES LOGS!\n";
open FICHIER,"<P:\\Prog_perl\\edital_pivot1.txt" or die "Ce fichier n'existe pas!";
my @lignes=<FICHIER>;
my $ligne=join('',@lignes); # pour tout mettre le fichier dans $ligne
print $1 if ($ligne =~ / Reception (.*) FIN IMPORT /s);
close (FICHIER);
Le pbme peut etre du à quoi?
Voila ce que j'ai mis et ca fonctionne tjs pas :
print "BIENVENUE DANS L EXTRACTION DES INFORMATIONS DANS LES LOGS!\n";
open FICHIER,"<P:\\Prog_perl\\edital_pivot1.txt" or die "Ce fichier n'existe pas!";
my @lignes=<FICHIER>;
my $ligne=join('',@lignes); # pour tout mettre le fichier dans $ligne
print $1 if ($ligne =~ / Reception (.*) FIN IMPORT /s);
close (FICHIER);
Le pbme peut etre du à quoi?
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
>
flongo
Messages postés
53
Date d'inscription
jeudi 2 avril 2009
Statut
Membre
Dernière intervention
9 décembre 2009
6 avril 2009 à 15:31
6 avril 2009 à 15:31
C'est quoi qui ne marche pas ? Le fait qu'il n'y est rien d'écrit dans le fichier WRITER ?
Si tel est le cas, c'est normal car j'ai mis print $1 pour afficher sur l'écran à titre d'exemple.
Pour mettre dans le fichier, utilise : print WRITER $1;
Si tel est le cas, c'est normal car j'ai mis print $1 pour afficher sur l'écran à titre d'exemple.
Pour mettre dans le fichier, utilise : print WRITER $1;
flongo
Messages postés
53
Date d'inscription
jeudi 2 avril 2009
Statut
Membre
Dernière intervention
9 décembre 2009
>
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
6 avril 2009 à 15:38
6 avril 2009 à 15:38
Je t'explique ce qui ne fonctionne pas: lorsque je mets print $1, l'affichage sur l'ecran ne se fait pas.
Maintenant quand je mets print WRITER $1, ca ne fonctionne pas non plus.
Donc au final j'ai essayé cela:
open FICHIER,"<P:\\Prog_perl\\edital_pivot1.txt" or die "Ce fichier n'existe pas!";
open WRITER, ">P:\\Prog_perl\\1.txt" or die "Le fichier ne peut etre édité!";
my @lignes=<FICHIER>;
my $ligne=join('',@lignes); # pour tout mettre le fichier dans $ligne
print WRITER $1 if ($ligne =~ / Reception (.*) FIN IMPORT /s);
close (FICHIER);
close (WRITER);
open FICHIER,"<P:\\Prog_perl\\1.txt" or die "Le fichier n'existe pas !";
while ($sor = <FICHIER>){
print $sor;
}
close (FICHIER);
Ce ne fonctionne pas non plus.
Merci de ton aide
Maintenant quand je mets print WRITER $1, ca ne fonctionne pas non plus.
Donc au final j'ai essayé cela:
open FICHIER,"<P:\\Prog_perl\\edital_pivot1.txt" or die "Ce fichier n'existe pas!";
open WRITER, ">P:\\Prog_perl\\1.txt" or die "Le fichier ne peut etre édité!";
my @lignes=<FICHIER>;
my $ligne=join('',@lignes); # pour tout mettre le fichier dans $ligne
print WRITER $1 if ($ligne =~ / Reception (.*) FIN IMPORT /s);
close (FICHIER);
close (WRITER);
open FICHIER,"<P:\\Prog_perl\\1.txt" or die "Le fichier n'existe pas !";
while ($sor = <FICHIER>){
print $sor;
}
close (FICHIER);
Ce ne fonctionne pas non plus.
Merci de ton aide
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
6 avril 2009 à 14:58
6 avril 2009 à 14:58
Salut,
106485010510997108
while (<FICHIER>) { print if /Reception/ .. /FIN IMPORT/; }--
106485010510997108
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
6 avril 2009 à 16:56
6 avril 2009 à 16:56
Re,
Essaie comme ça ;-)
Essaie comme ça ;-)
open FICHIER,"P:\\Prog_perl\\edital_pivot1.txt" or die "Ce fichier n'existe pas!"; open WRITER, ">P:\\Prog_perl\\infos_pivot1.txt" or die "Le fichier ne peut etre édité!"; while (<FICHIER>) { print WRITER if /Reception/ .. /FIN IMPORT/; } __END__
flongo
Messages postés
53
Date d'inscription
jeudi 2 avril 2009
Statut
Membre
Dernière intervention
9 décembre 2009
6 avril 2009 à 16:59
6 avril 2009 à 16:59
Super
Ca marché.
Je te remercie bcp!
Ca marché.
Je te remercie bcp!