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 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
| #!C:\perl\bin\perl.exe
use warnings; # ah les warning
use DB_File; # la base de donnees mon %hache
use strict; # pour les controles classiques
use File::Find; # pour le trt des fichiers (metadonnees)
use File::Copy; # pour copier les fichiers ancien_nom nouveau_nom
use Image::ExifTool ':Public'; # trouver sur Internet "http://www.sno.phy.queensu.ca/~phil/exiftool/" cf methode 'ImageInfo($fichier)';
use POSIX qw/strftime/; #pour récupérer la date
my (%hache2, $cle, $valeur);
# je veux pré alouer de la mémoire a mon %hache plus de 2 millions de paires 'cles/valeurs'
keys(%hache2) = 2097152;
# C'est le repertoire du programme le point de depart
my $dir = "C:\\mestraitements\\atach\\";
#1################################################################################################################################
#1##################### D?but comptage de repertoires ############################################################################
#1################################################################################################################################
# ouvre le repertoire $dir
opendir( DIR, $dir ) or die "Impossible d'ouvrir $dir: $!";
# récupère la liste des sous-répertoires de $dir dans @subdirs
my @subdirs = grep { -d } readdir(DIR);
#@subdirs2 est la liste des sous-répertoires de @subdirs contenant le mot pica
my @subdirs2 = grep($_ =~ /pica/, @subdirs);
closedir(DIR);
#1################################################################################################################################
#1#################### Fin comptage de repertoires ##############################################################################
#1################################################################################################################################
#2# ATTENTION TRES IMPORTANT
#2# je detruit la mémoire.... A EVITER +++++
#2# ne pratiquer que si je veux faire un RESET.....COMPLET
#2################################################################################################################################
#2#################### Ligne de destruction de la base d'index ##################################################################
#2################################################################################################################################
#2#################### à n'activer que lors d'un reset complet ##############################################################
#2################################################################################################################################
unlink "ma_base_de_type" ; #### /!\ attention, CF warning au dessus. /!\ ######################################################
#2################################################################################################################################
#2#################### Fin Ligne de destruction de la base d'index ##########################################################
#2################################################################################################################################
## Les ouvertures de connections
# la connection a la base persistante hache
tie %hache2, "DB_File", "ma_base_de_type", O_RDWR|O_CREAT, 0666, $DB_HASH or die "Cannot open file 'ma_base_d_index': $!\n";
# Le handle de fichier pour lister tous les documents des repertoires utilisés, la TRACE
#open (SORTIE, ">nom_des_documents_analyses.txt") || die 'le fichier erreurs.txt impossible ';
# zooooooooo l'oeil du cyclonnnnnnnnneeeeeeeee
# Ah la recursiviteeeeeeeeee ouaaahhhhhhhhh
find(\&traite_fichier, @subdirs2);
while (($cle, $valeur) = each %hache2)
{ print "$cle -> $valeur\n" };
untie %hache2;
#4#################################################################################################################################
#4#################################################################################################################################
#4# Ma fonction MAGIQUE...non #####################################################################################################
#4#################################################################################################################################
sub traite_fichier
{
my $type = "";
# initialisation du nom de fichier je passe par la variable locale "$_"
my $fichier = $_;
# la trace des fichiers analyses, tous les fichiers de tous les repertoires oui tous...;
#print SORTIE "$fichier\n";
# j'étudie les meta données
my $info = ImageInfo($fichier);
my $type = $info->{FileType};
if (exists($hache2{$type}))
{
$hache2{$type} = $hache2{$type}++;
}
else
{
$hache2{$type} = 1;
}
} |
Partager