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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
| #!C:\Perl\bin\perl.exe
use strict;
use warnings;
use DBI;
use DBD;
use CGI;
my $basedir = 'C:/Program Files/EasyPHP1-8/www/tdm/traitement';
open my($src),'<', "$basedir/testsrc.txt"
or die "E/S : $!\n";
# open my($out), '>>', "$basedir/rslt.txt" or die "E/S : $!\n";
#connection to database
my $db = DBI->connect("dbi:mysql:dbname=tdm:host=localhost","chakri","farid") or die "connection impossible!";
# liste des commandes
my @commands = qw(
ALAIL
ANOIL
NSSIN
SRFIL
ESMIN
GLRIL
DMPIL
);
# construction de la regex pour reconnaître l'une de ces commandes en début de ligne (éventuellement après quelques espaces/tabulations)
# on capture la commande utilisée aspect final de la regex : m/^\s*(SRFIL|ESMIN|...|DMPIL)/
my $rx_string = join '|', map { quotemeta $_ } @commands;
my $rx_commands = qr/^\s*($rx_string)/;
# variable d'état pour savoir si l'on se trouve dans ule paragraphe qu'on veut imprimer ($in == 2), après une commande ($in == 1),
# ou en dehors de tout cela ($in == 0)
my $in = 0;
while(<$src>){
if( not $in and my ($cmd) = (m/$rx_commands/) ) {
#print $out "$cmd:\n\n";
$in = 1;
}
elsif( $in == 1 and m/^\s*TRAITEMENT ...... ACC/ ) {
$in = 2;
}
# anaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa pour SRFIl
while($in == 2){
if(/(\d{2}\-\d{2}\-\d{2})\/(\d{2}\s+\w{1}\s+\d{2}\s+\w{2}\s+\d{2})\s+EVT=(.*)$/){
my $date = $1;
my $heure = $2;
my $evt = $3;
#print 'date: '.$date."\n";
#print 'heure: '.$heure."\n";
#print 'evt: '.$evt."\n";
$db->do("insert into srfil values ('$date', '$heure', '$evt');")|| die "pb de requete : $DBI::errstr";
}
elsif(/\/AM\s*=\s*([\w\d]+)\s*ETAT=(\w+)\s*AF\s*=\s*([\w\d]+)$/){
my $am = $1;
my $etat = $2;
my $af = $3;
$db->do("insert into srfil values ('$am', '$etat', '$af',);")|| die "pb de requete : $DBI::errstr";
}
elsif(/\/\s*([\s\d]+)$/)
#while(/\/\s*([\s\d]+)$/)
{
my $msg = $1;
$db->do("insert into srfil values ('$msg');")|| die "pb de requete : $DBI::errstr";
}
### machi anaaaaaaaaaaaaaaaaaaaaaaaa
elsif( $in == 2 and m/^\s*TRAITEMENT ...... EXC/ ) {
$in = 1;
# print $out "\n\n";
}
elsif( $in == 2 ) {
#print $out $_;
#!/usr/bin/perl
# send them to the database
# je dois définir quel table de destination
#$db->do("insert into srfil values ('$ct', '$date', '$heure', '$evt', '$am', '$etat', '$af', '$msg');")|| die "pb de requete : $DBI::errstr";
}
}
}
close $src;
#close $out; |
Partager