...devient vite une usine a gaz surtout quand vous rechercher dans un
fichier de plusieurs milliers de lignes une centaine d'occurences
différentes.
J'ai pensé mettre mes différentes occurences dans un tableau mais je ne vois
pas comment rechercher par la suite.
Mon deuxieme souci est le temps d'execution et l'utilisation CPU/ RAM.
Je suis preneur de toutes idées et/ou direction possible.
open F, "$dir_fichier"; @F = <F>; close F or die "unlock: $!n";
foreach (@F) {
$or{'Free'}++ if (grep (/free.fr/google.pl/,$_)); $or{'Google Images'}++ if (grep (/images.google/,$_)); ...
### etc }
cela dit, on doit pouvoir améliorer ce qui se trouve dans la boucle pour eviter de tout ecrire mais pour l'instant ca ira. de plus a l'utilisation, grep est tres rapide, moins d'1 seconde pour traiter les memes 18000 lignes du fichier.
Avec un hash du genre : my %domaines = ('free.fr' => 'Free', 'images.google' => 'Google Images', 'google.fr' => 'Google France', ...) ;
tu as juste à boucler sur les clés, et à incrémenter ton %or selon les valeurs :
open F, "$dir_fichier"; while (<F>) { foreach my $dom (keys %domaines) { $or{$domaines{$dom}}++ if index(lc, $dom) > - 1 ; } }
PS : au passage, une regex comme /free.fr/google.pl/ ça veut dire quoi pour toi ???
open F, "$dir_fichier";
@F = <F>;
close F or die "unlock: $!n";
foreach (@F) {
$or{'Free'}++ if (grep (/free.fr/google.pl/,$_));
$or{'Google Images'}++ if (grep (/images.google/,$_));
...
### etc
}
cela dit, on doit pouvoir améliorer ce qui se trouve dans la boucle pour
eviter de tout ecrire mais pour l'instant ca ira. de plus a l'utilisation,
grep est tres rapide, moins d'1 seconde pour traiter les memes 18000 lignes
du fichier.
Avec un hash du genre :
my %domaines = ('free.fr' => 'Free',
'images.google' => 'Google Images',
'google.fr' => 'Google France',
...) ;
tu as juste à boucler sur les clés, et à incrémenter ton %or selon les
valeurs :
open F, "$dir_fichier";
while (<F>) {
foreach my $dom (keys %domaines) {
$or{$domaines{$dom}}++ if index(lc, $dom) > - 1 ;
}
}
PS : au passage, une regex comme /free.fr/google.pl/ ça veut dire
quoi pour toi ???
open F, "$dir_fichier"; @F = <F>; close F or die "unlock: $!n";
foreach (@F) {
$or{'Free'}++ if (grep (/free.fr/google.pl/,$_)); $or{'Google Images'}++ if (grep (/images.google/,$_)); ...
### etc }
cela dit, on doit pouvoir améliorer ce qui se trouve dans la boucle pour eviter de tout ecrire mais pour l'instant ca ira. de plus a l'utilisation, grep est tres rapide, moins d'1 seconde pour traiter les memes 18000 lignes du fichier.
Avec un hash du genre : my %domaines = ('free.fr' => 'Free', 'images.google' => 'Google Images', 'google.fr' => 'Google France', ...) ;
tu as juste à boucler sur les clés, et à incrémenter ton %or selon les valeurs :
open F, "$dir_fichier"; while (<F>) { foreach my $dom (keys %domaines) { $or{$domaines{$dom}}++ if index(lc, $dom) > - 1 ; } }
PS : au passage, une regex comme /free.fr/google.pl/ ça veut dire quoi pour toi ???
Fabrice L.
Avec un hash du genre : my %domaines = ('free.fr' => 'Free', 'images.google' => 'Google Images', 'google.fr' => 'Google France', ...) ;
tu as juste à boucler sur les clés, et à incrémenter ton %or selon les valeurs :
open F, "$dir_fichier"; while (<F>) { foreach my $dom (keys %domaines) { $or{$domaines{$dom}}++ if index(lc, $dom) > - 1 ; } }
C pas mal ca ! faut que je teste !
PS : au passage, une regex comme /free.fr/google.pl/ ça veut dire quoi pour toi ???
rechercher si dans le fichier se trouve 'free.fr/google.pl' j'ai echappé les . ct pas vraiement utile ... mais bon ...
Fabrice
Avec un hash du genre :
my %domaines = ('free.fr' => 'Free',
'images.google' => 'Google Images',
'google.fr' => 'Google France',
...) ;
tu as juste à boucler sur les clés, et à incrémenter ton %or selon les
valeurs :
open F, "$dir_fichier";
while (<F>) {
foreach my $dom (keys %domaines) {
$or{$domaines{$dom}}++ if index(lc, $dom) > - 1 ;
}
}
C pas mal ca ! faut que je teste !
PS : au passage, une regex comme /free.fr/google.pl/ ça veut dire
quoi pour toi ???
rechercher si dans le fichier se trouve 'free.fr/google.pl' j'ai echappé les
. ct pas vraiement utile ... mais bon ...