Comptabiliser et suppresion doublon

Résolu
filipe91 -  
ltstam Messages postés 395 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je débute en perl et je dois comptabiliser les doubons et les supprimer d'un fichier passé en paramètre. Mon code supprime les doublons mais ne les comptabilise pas, avez-vous une idée ? Je pense qu'il ne manque pas grand chose, mais je rame...

Merci d'avance


#!/usr/bin/perl -w
 
 
my @table ;
my @tmp ;
 
open ( FICHIER,"$ARGV[0]" ) or die "erreur sur $ARGV[0]" ;
 
my $i=0 ;
 
while ( <FICHIER> ) {
        my $ligne=$_ ;
        chomp $ligne ;
        $table[$i]=$ligne ;
        $i++ ;
}
close( FICHIER ) ;
 
# Suppression des doublons
my %hachage   = map { $_, 1 } @table;
my @unique = keys %hachage;
 
# Affichage du tableau sans doublon
print join("\n", @unique), "\n";
A voir également:

4 réponses

ltstam Messages postés 395 Date d'inscription   Statut Membre Dernière intervention   59
 
salut,
je ne m'y connais pas en perl.Mais, je crois pouvoir te donner des indications.indiques moi dans quelle section du programme est ce que tu répères les doublons.
A cet endroit là tu peux ajouter un compteur de doublons
0
filipe91
 
En fait c'est cette partie là qui supprime les doublons :
my %hachage = map { $_, 1 } @table;
my @unique = keys %hachage;

Dans une version antérieure, j'avais écris en perl une fonction qui compte, mais elle n'utilisais pas les hash, et prend bcp de temps à l'execution...
0
ltstam Messages postés 395 Date d'inscription   Statut Membre Dernière intervention   59
 
dans cette partie là tu peux ajouter un compteur qui s'incrémente après chaque suppression
0
filipe91
 
La réponse ci-dessous :

#!/usr/bin/perl -w
 
 
my @table ;
my @tmp ;
 
open ( FICHIER,"$ARGV[0]" ) or die "erreur sur $ARGV[0]" ;
 
my $i=0 ;
 
while ( <FICHIER> ) {
        my $ligne=$_ ;
        chomp $ligne ;
        $table[$i]=$ligne ;
        $i++ ;
}
close( FICHIER ) ; 
 
 
# Compte et supprime les doublons
my %ips;
foreach my $ip (@table){
$ips{$ip}++;
} 
print join ("\n", %ips) ;
0
ltstam Messages postés 395 Date d'inscription   Statut Membre Dernière intervention   59
 
ok si ça marche je pense que tu peux marquer la discussion comme résolue.
0