400der
exemple de programme qui depuis un fichier téléchargé
sur http://www.videoposte.com/videoposte/ au format html
qui relate vos 400 derniéres
opérations sur votre ccp. Créé 3 rapports, un fichier
texte, un fichier.csv un rapport écran imprimable. Le tout vous
permettra de gérer votre compte et d'accéder à vos
opérations de les charger dans un tableur (csv)
Et le programme vous permet même
de questionner l'ordinateur sur la date la désignation le total
en francs et euro d'une transaction choisi par numéro.
Ci dessous une version en couleur,
trouver la derniére version de ce
programme ici
#!/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>;
print"je
traite le fichier $file\n";
$filout="./log_a.txt";
$filoutcsv="log400tr.csv";
#----------- construction du hash de hash et de
la liste de liste.
$t400trs{$a}=("$tdates{$a}","$tdesigns{$a}","$tfrancs{$a}","$teuros{$a}");
@ttr400ccp=(@tdate,@tfrancs,@teuro,@tdesign);
$t=0;#
compte les lignes du fichier source
$a=$b=0;#
francs ou euro (initialisation des tab & ls, nmb de tr).
open(F,"$file")ordie"merde
pbOpsrc $!";
@contenu=<F>;
closeFordie"remerde
pbfermsrc $!";
@nwcontenu=<FO>;
@tcsv=<FV>;
foreach$ligne(@contenu){
$t++;
if($t<=82){
print"#";
}
elsif($t<=83){
$ligne="date,designation,francs,euros"."\n";
tlib_csv($ligne);
print"\ntraitement
maintenant\n";
}
else{
$ligne=~s/^(<.*?>)?//;
$ligne=~s/^(<.*?>)?//;
$ligne=~s/()(<.*?>)+//;
$ligne=~s/()(<.*?>)+//;
$ligne=~s/\n//;#
ote les sauts de lignes.
nextif($ligneeq"");#
et degage les ligne vides.
$u++;
# 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.?//;
$tfrancs{$a}=$ligne;#
ajoute un element a %tfrancs.
#*****format
$lf=$ligne;#
ligne francs = $ligne
chomp$lf;
#*****tabl @tfrancs
push@tfrancs,$ligne;#
liste tfrancs
#**********
$lcsv=$ligne;
$lcsv=~s/,/./;
$lcsv=$lcsv.",";
push@tcsv,$lcsv;
#**********
$ligne=$ligne."
francs";
$a++;
}
else{
$ligne=~s/().{1}nbsp.?//;
$teuros{$a}=$ligne;#ajoute
un element a %teuros.
$le=$ligne;
chomp$le;
write;
#************
$lcsv=$ligne;
$lcsv=~s/,/./;
$lcsv=$lcsv."\n";
push@tcsv,$lcsv;
#************
push@teuro,$ligne;#
ass de la liste teuro.
$ligne=$ligne."
euro\n";
$b++;
}
}
# reconnaitre le champ date.
elsif($ligne=~m/^\d{2}\/\d{2}/){
$tdates{$a}=$ligne;#ajoute
un element a %tdates.
#*******format
$ldt=$ligne;
chomp$ldt;
#*******tabl @tdate
push@tdate,$ligne;#
assignation de la liste tdate
#************
$lcsv=$ligne;
$lcsv=$ligne.",";
push@tcsv,$lcsv;
#************
$ligne=$ligne."\t";
}
elsif($ligne=~m/^.*?\w.?/){
$tdesign{$a}=$ligne;#
ajoute un element a %tdesigns.
#**********format
$ldg=$ligne;
chomp$ldg;
#**********tableau design
push@tdesign,$ligne;
#**********fichier csv
$lcsv=$ligne;
$lcsv=$lcsv.",";
push@tcsv,$lcsv;
#**********************************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";
}
}
push@nwcontenu,$ligne;
}
}
subtlib_csv{
my($ligne)=@_;
push@tcsv,$ligne;
}
print"\n$t
lignes traitees pour $a operations enregistrees.\n";
#*********************************
# confection d'un fichier db
#@ttr400ccp = (@tdate, @tfrancs, @teuro, @tdesign);
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";
$numt=<STDIN>;
chomp$numt;
$linep=$t400trs{$numt};
# $linep = $ttr400ccp["$numt"];
print"transaction
$numt = $linep\n";
print"voulez
vous continuer ? [o-n]\n";
$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;
alain Adelmar email : a.adelmar@numericable.fr