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;