|
|
|
|
Bonjour !
J'ai pour but de récuperer les données d'un fichier texte pour pouvoir par la suite les inserer dans une base de données.
Voici un exemple du type de fichier que je souhaite parser:
root@desktop:/data/hey# tail -n 20 tmp/erf/253158/ofi/txt 2007:02:18;14:55;AG4561_2;192.168.0.27;ok 2007:02:18;15:25;Serveur_X12;192.168.0.231;ok etc etc ..
#!/usr/bin/perl -w
use strict;
print "Content-type: text/html\n\n";
open FICHIER,"< monfichier.log" or die "Le fichier n'existe pas !";
while ($ligne = <FICHIER>)
{
if($ligne =~ ( chaine de recherche que je ne sais pas ecrire )
{
my $date = $1;
my $heure = $2;
my $elem = $3;
my $adIP = $4;
my $statut = $5;
}
}
close FICHIER;
Configuration: Windows XP Internet Explorer 6.0
Il faut préciser ce que tu veux faire avec les variables
#!/usr/bin/perl
use strict;use warnings;
open FICHIER,"< monfichier.log" or die "E/S : $!\n";
while (my $ligne = <FICHIER>){
my ($date,$heure,$elem,$adIP,$statut) = split /;/,$ligne;
# traitment des variables
.....
.....
}
close FICHIER;
lami20j |
Wow ! Merci pour la rapidité de réponse !
#!/usr/bin/perl -w
use strict;
use DBI;
use CGI;
my($cgi) = new CGI;
print "Content-type: text/html\n\n";
open FICHIER,"< monfichier.log" or die "Le fichier n'existe pas !";
while ($ligne = <FICHIER>)
{
if($ligne =~ ( chaine de recherche que je ne sais pas ecrire )
{
my $date = $1;
my $heure = $2;
my $elem = $3;
my $adIP = $4;
my $statut = $5;
}
}
#Connection à la base de données mysql NomBase
my $db = DBI -> connect (("dbi:mysql:dbname=NomBase;host=localhost;","root","******")) or die "connection impossible!";
#recuperation puis insertion d une donnee
my($date) = $cgi->param("date");
my($heure) = $cgi->param("heure");
my($elem) = $cgi->param("elem");
my($adIP) = $cgi->param("IP");
my($statut) = $cgi->param("Statut");
$db->do("insert into client values ('$date', '$heure', '$elem', '$adIP', '$statut');")|| die "pb de requete : $DBI::errstr";
close FICHIER;
Voila, donc je ne sais pas si la syntaxe est exacte vu que c'est mon premier code en PERL, mais ce qui me pose le plus de probleme c'est la recherche pour recuperer les differents element du fichier texte (adresse ip etc ... ) |
Je ne comprends pas très bien ce que tu veux.
#!/usr/bin/perl
use strict;use warnings;
my ($date,$heure,$elem,$adIP,$statut);
while (my $ligne = <DATA>){
($date,$heure,$elem,$adIP,$statut) = split /;/,$ligne;
# dans la boucle on lit chaque ligne
# et ensuite j'affiche le contenu de variables
print "***** DANS LA BOUCLE *****\n";
print "\$date : $date\n";
print "\$heure : $heure\n";
print "\$elem : $elem\n";
print "\$adIP : $adIP\n";
print "\$statut: $statut\n";
}
# à l'exterieur de la boucle
# on affiche seulement la dernière ligne
# le trataitement il faut l'exécuter dans la boucle
print "===== A L'EXTERIEUR DE LA BOUCLE =====\n";
print "\$date : $date\n";
print "\$heure : $heure\n";
print "\$elem : $elem\n";
print "\$adIP : $adIP\n";
print "\$statut: $statut\n";
__END__
2007:02:18;14:55;AG4561_2;192.168.0.27;ok
2007:02:18;15:25;Serveur_X12;192.168.0.231;ok
lami20j |
Ca doit être quelque chose comme ça
#!/usr/bin/perl -w
use strict;
use DBI;
use CGI;
my $cgi = new CGI;
my ($date,$heure,$elem,$adIP,$statut);
print "Content-type: text/html\n\n";
open FICHIER,"< monfichier.log"
or die "Le fichier n'existe pas ! : $!\n";
#Connection à la base de données mysql NomBase
my $db = DBI -> connect (("dbi:mysql:dbname=NomBase;host=localhost;","root","******"))
or die "connection impossible!";
while ($ligne = <FICHIER>){
# récupération des éléments
($date,$heure,$elem,$adIP,$statut) = split /;/,$ligne;
# et on insere dans la base
$db->do("insert into client values ('$date', '$heure', '$elem', '$adIP', '$statut')");
or die "pb de requete : $DBI::errstr";
}# fin de traitement de fichier
close FICHIER;
Tu n'as pas besoin de if($ligne =~ ( chaine de recherche que je ne sais pas ecrire ) split est suffisant vu que les données sont séparées par point-virgule lami20j |
Merci beaucoup pour ton aide !
#!/usr/bin/perl -w
use strict;
use DBI;
use CGI;
my $cgi = new CGI;
my ($date,$heure,$elem,$adIP,$statut);
print "Content-type: text/html\n\n";
open FICHIER,"< monfichier.log"
or die "Le fichier n'existe pas ! : $!\n";
#Connection à la base de données mysql NomBase
my $db = DBI -> connect (("dbi:mysql:dbname=NomBase;host=localhost;","root","******"))
or die "connection impossible!";
while ($ligne = <FICHIER>){
# récupération des éléments
($date,$heure,$elem,$adIP,$statut) = split /;/,$ligne;
# et on insere dans la base
$db->do("insert into client values ('$date', '$heure', '$elem', '$adIP', '$statut')");
or die "pb de requete : $DBI::errstr";
}# fin de traitement de fichier
close FICHIER;
|