Je voudrais appliquer le programme suivant à tous mes fichiers *.dat de mon répertoire.
Je n'ai pas réussi à ouvrir tous les fichiers de la listes et mon while bloque, je me doute que ce n'est pas "while ($ligne = <fichier>)" mais je ne vois pas quoi mettre.
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 #!/usr/bin/perl use strict; use DBI; use CGI; $co = new CGI; $database="arpwatch"; $hostname="localhost"; $login="root"; $mdp="root"; $dsn = "DBI:mysql:database=$database;host=$hostname"; $dbh = DBI->connect($dsn, $login, $mdp) or die "Echec de connexion"; @liste = glob("/home/user/*.dat"); @liste = </home/user/*.dat>; foreach (@liste) { my $ligne; while ($ligne = <fichier>) { if($ligne =~ /(.*)\t(.*)\t(.*)\t(.*)\t.*/) { my $requete_verif = "SELECT * FROM test WHERE mac = '$1' AND ip = '$2' AND epoch = '$3'"; my $sth_verif = $dbh->prepare($requete_verif) or die "erreur de préparation\n"; $sth_verif ->execute() or die "erreur d'exécution\n"; my $rows = $sth_verif->rows; $sth_verif->finish; if ($rows == 0) { my $requete = "INSERT INTO test (mac, ip, epoch, texte) VALUES ('$1', '$2', '$3', '$4')"; my $sth = $dbh->prepare($requete) or die "erreur de préparation\n"; $sth->execute() or die "erreur d'exécution\n"; $sth->finish; } } else { print "Enregistrement impossible\n"; } } } $dbh->disconnect;
Partager