#!/usr/bin/perl -w
# remd: netoyage de page shtml de (400 dernieres
operations ccp)
# pour en sortir un fichier texte list par operation
et une table de hash
# pour rechercher une operation par la date ou
le montant ou le label,
# alain adelmar nov 2000
# *******************************************ce
prog tourne a merveille
formatSTDOUT_TOP=
Page@<<
$%
DateTransactionfrancseuros
=============================================
.
print"Entrez
le nom du fichier a traiter\n";
$file=<STDIN>;
chomp$file;
print"je
traite le fichier $file\n";
$z=0;
$filout="./log_a.txt";
$filoutcsv="log400tr.csv";
#----------- construction du hash de hash et de
la liste de liste.
# choix d'un numéro unique indexé
sur la date de création du fichier source.
#$da = abs((stat($file)[10])/ 86400); #absol
jours depuis création
#$u = $da-$a; #idem moins
$a
$t=0;#
compte les lignes (en dur) du fichier source.
$a=$b=0;#
francs ou euro (initialisation des tab & ls, nmb de tr).
@nwcontenu=<FO>;#
assigne la variable liste au handle FO.
@tcsv=<FV>;#
idem pour @tcsv à FV.
open(F,"$file")ordie"merde
pbOpsrc $!";
@contenu=<F>;
closeFordie"remerde
pbfermsrc $!";
foreach$ligne(@contenu){
$t++;#
compte lignes et dégage la merde.
if($t<=82){
print"#";
}
elsif($t<=83){#
entete
$ligne="date,designation,francs,euros"."\n";
tlib_csv($ligne);
print"\ntraitement
maintenant\n";
}
else{
$ligne=~s/^(<.*?>)?//;
$ligne=~s/^(<.*?>)?//;
$ligne=~s/()(<.*?>)+//;
$ligne=~s/()(<.*?>)+//;
nextif($ligneeq"");#
et degage les ligne vides.
# reconnaitre le champ francs et le champ euro.
(1/2)
if($ligne=~m/^\d{0,1}.*?\d{1,3}.?\d{2} /){
if($a==$b){
$ligne=~s/().{1}nbsp.?//;
#*****format
chomp$ligne;#
ligne francs = $ligne
$lf=$ligne;
#**********
$ligne=~s/,/./;
$ligne=$lcsv.",";
tlib_csv($ligne);
#**********
$ligne=$ligne."
francs";
$a++;
}
else{
$ligne=~s/().{1}nbsp.?//;
chomp$ligne;
$le=$ligne;
$te{$a}=$ligne;#ajoute
un element a %teuros.
write;
# assignation d'une ligne de transaction
@ltr=qw($ld
$lf $le $ldg);
$lstr[$a]=[@ltr];
# $lstr[$a] = (["$ld","$lf","le","$ldg"]);
#************
$ligne=~s/,/./;
$ligne=$ligne."\n";
tlib_csv($ligne);
$b++;
}
}
# reconnaitre le champ date.
elsif($ligne=~m/^\d{2}\/\d{2}/){
$td{$a}=$ligne;#ajoute
un element a %tdates.
chomp$ligne;
$ldt=$ligne;
tlib_csv($ligne);
$ligne=$ligne."\t";
}
elsif($ligne=~m/^.*?\w.?/){
chomp$ligne;
$ldg=$ligne;
tlib_csv($ligne);
#**********************************alignement
sans format***
if(length$ligne<=16){
$ligne=$ligne."\t\t\t\t";
}
elsif(length$ligne<=24){
$ligne=$ligne."\t\t\t";
}
elsif(length$ligne<=32){
$ligne=$ligne."\t\t";
}
else{
$ligne=$ligne."\t";
}
}
# dépose chaque element avec "\n" aprés
euro.
push@nwcontenu,$ligne;
}
}
subtlib_csv{
my($ligne)=@_;
$lcsv=$ligne;
$lcsv=$lcsv.",";
push@tcsv,$lcsv;
}
print"\n$t
lignes traitees pour $a operations enregistrees.\n";
#*********************************
# confection d'un fichier db
open(FO,">$filout")ordie"merde
pbOpcible $!";
printFO@nwcontenu;
closeFOordie"rem
pbfermcible $!";
open(FV,">$filoutcsv")ordie"mutain
de poine ca couille pbOpfls $!";
printFV@tcsv;
closeFVordie"flute
that's os pbShutfls $!";
print"Voilà,
les deux fichier sont créés:\nlog_a.txt => pour un listing
texte\nlog400tr.csv => pour une db (séparé par des virgule).\n";
print"
Voulez vous jeté une oeil ? [o/n]\n";
$resp=<STDIN>;
#-------- appel a oui_non dans boucle while, fort
isn't it ?
while(!oui_non($resp)){
print"indiquer
le numéro de la transaction:\n";
chomp($numt=<STDIN>);
#$linep = $tt{$numt};
$linep=$lstr[$numt];
print"transaction\t
$linep\n";
print"voulez
vous continuer ? [o-n]\n";
chomp($resp=<STDIN>);
}
print"tchao
!!\n";
#-------------- oui-non -----faire une routine
qui renvoie 1 si oui
suboui_non{
my($rep)=@_;
$rep=~s/\W.*//;
$resp=~tr/A-Z/a-z/;
if($rep=~/^o|y/){
return0;#
faux pour while(! oui_non($resp))
}
else{
return1;#
vrai pour sortir
}
}
formatSTDOUT=
@<<<<<@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<@<<<<<<<<@<<<<<<<
$ldt, $ldg, $lf, $le
.
END;